1

既存の Excel ファイルに情報を追加しようとしていますが、java.lang.NullPointerException を受け取り続けます。以下のコードと例外メッセージを参照してください。

コード:

private WritableSheet appendingSheet;
private static File report;

public void AppendToDoc (String path) throws IOException, WriteException, BiffException {

    this.inputFile = path;
    report = new File(inputFile);

    Workbook appendingWorkbook = Workbook.getWorkbook(new File(inputFile));
    WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"),appendingWorkbook);
    appendingSheet = copy.getSheet("Sheet 1");      
}

public void WriteToDoc (int option, String testName, String execDate, String time, boolean status) throws RowsExceededException, WriteException, IOException, BiffException{        


    int startingRow = NumOfRows(this.inputFile) + 1; //I have a function which finds the number of existing rows in the existing document. It works. 
    Label label = new Label(1, startingRow, "hello", times);    
    appendingSheet.addCell(label);

}

呼び出しコード:

AppendToDoc("C:/Users/smith/ExcelTestFile.xls");
WriteToDoc(2, "This is a test", "executed", timeStamp, true);

例外メッセージ:

スレッド「メイン」で例外 java.lang.NullPointerException jxl.write.biff.Styles.getFormat(Styles.java:214) で jxl.write.biff.CellValue.addCellFormat(CellValue.java:468) で jxl.write. jxl.write.biff.LabelRecord.setCellDetails(LabelRecord.java:216) の biff.CellValue.setCellDetails(CellValue.java:282) jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1199) の ExcelOperations.WriteToDoc (ExcelOperations.java:149) ChequeImage.main (ChequeImage.java:174) で

: 「appendingSheet.addCell(label);」の行で例外が発生しているようです。

助けてくれてありがとう。

EDIT 1 : 下の画像は、「appendingSheet.addCell(label)」が実行される直前の appendingSheet の内容を示しています。それが何を表しているのか正確にはわかりませんが、確かにnullではないようです。 ここに画像の説明を入力

4

3 に答える 3

0

私は Biff に精通しているとは言えませんが、POI も同様の方法で動作するようです。ワークブックを作成したように見えます。

WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"),appendingWorkbook);

ただし、参照するシートは作成しません。

appendingSheet = copy.getSheet("シート 1");

「copy.getSheet("Sheet 1");」のため、NPE が発生していると思います。nullを返しています。Excel でワークブックを開くだけの場合とは異なり、API はその既定のシートを作成しない可能性があります。セルを追加する前に、シート オブジェクトを作成する必要があるに違いありません。

于 2013-08-01T01:35:12.987 に答える
0

だから...私は問題を解決することができました。

理由を本当に説明することはできませんが、「copy」と「appendingWorkbook 」( appendingSheet ではない)をAppendToDoc()のローカルではなくグローバル変数として再定義した後。copy.write()行を追加するだけでなく、プログラムは機能しました...

助けてくれてありがとう。ほんとうにありがとう。

于 2013-08-01T21:52:21.097 に答える