Excelファイルを操作するためにJavaでJexcelAPIを使用しています。Workbook オブジェクトの 2 つのコピーを作成する必要があります。1 つはさらに操作するための WritableWorkbook で、もう 1 つは単に元の Workbook からコピーして保存するためです。バックアップ。これは、最近 ArrayIndexOutOfBounds 例外が発生するまで、長い間機能していました。スタック トレースは次のようになります。
スレッド「メイン」の例外 java.lang.IndexOutOfBoundsException: インデックス: 62、サイズ: 54 java.util.ArrayList.rangeCheck(ArrayList.java:604) で java.util.ArrayList.get(ArrayList.java:382) でjxl.biff.FormattingRecords.getXFRecord(FormattingRecords.java:338) で jxl.read.biff.CellValue.getCellFormat(CellValue.java:144) で jxl.write.biff.CellValue.(CellValue.java:129) で jxl. write.biff.LabelRecord.(LabelRecord.java:116) at jxl.write.Label.(Label.java:79) jxl.write.biff.SheetCopier.shallowCopyCell(SheetCopier.java:808) jxl.write.biff .SheetCopier.shallowCopyCells(SheetCopier.java:934) jxl.write.biff.SheetCopier.copySheet(SheetCopier.java:219) jxl.write.biff.WritableSheetImpl.copy(WritableSheetImpl.java:1584) jxl.write. biff.WritableWorkbookImpl.copyWorkbook(WritableWorkbookImpl.java:971) jxl.write.biff.WritableWorkbookImpl.(WritableWorkbookImpl.java:343) jxl.Workbook.createWorkbook(Workbook.java:339) jxl.Workbook.createWorkbook(Workbook.java:320)で musicpred.musicpreddebugtest.mainで(musicpreddebugtest.java:17) Java 結果: 1
問題を次のコード スニペットに要約しました。
package musicpred;
import java.io.File;
import jxl.Workbook;
import jxl.write.WritableWorkbook;
import java.io.*;
import jxl.read.biff.BiffException;
import jxl.write.*;
public class musicpreddebugtest{
public static void main(String[] args) throws IOException, BiffException,
WriteException{
Workbook workbook = Workbook.getWorkbook(new File ("NBSCOMBINED.xls"));
WritableWorkbook backup = Workbook.createWorkbook(new File("BACKUP.xls"),workbook);
backup.write();
backup.close();
WritableWorkbook writableWorkbook = Workbook.createWorkbook(new
File("NBSCOMBINEDW.xls"), workbook);
}
}
両方の WritableWorkbooks を同時に作成でき、2 つ目のもの (「writableWorkbook」と呼ばれる) を write() することもできることに気付きましたが、何らかの理由で 2 つ目のもの (「バックアップ」) を write() しようとすると、エラーがスローされます。また、アウトバウンド インデックスに特別な意味が見られないことにも注意してください。ワークブック (行、列、またはシート) に次元 54 のものは何もありません。長さ62。
これが突然起こり始めた理由を知っている人はいますか? 恥ずかしいほど簡単な答えだと思いますが、わからないので、どんな助けでも大歓迎です!