3

私は自分のコーディングで少し課題に直面しています。

File file = new File("template.ods");
Sheet sheet;
try {
    // load file
    sheet = SpreadSheet.createFromFile(file).getSheet("Certificate");
    System.out.println(file);
    System.out.println(sheet.getCellAt("A1").isEmpty());
    sheet.setValueAt("A1", 1, 1);;
    System.out.println(sheet.getCellAt(1, 1).getTextValue());
    sheet.getCellAt(2, 2).setValue("B2");
    sheet.getCellAt(3, 3).setValue("C3");
    sheet.getCellAt(4, 4).setValue("D4");
    // Save to file and open it.
    File outputFile = new File("fillingTest.ods");
    OOUtils.open(sheet.getSpreadSheet().saveAs(outputFile));

} catch (Exception e) {
    e.printStackTrace();
}

jOpenDocument-Library について理解を深めています。既存の OpenOffice-Spreadsheet-Template (template.ods) にいくつかのサンプル値を入力したいと考えています。上記のコードを実行すると、コンソールに次のように表示されます。

template.ods
true

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at org.jopendocument.dom.spreadsheet.Table.getRow(Unknown Source)
    at org.jopendocument.dom.spreadsheet.Table.getImmutableCellAt(Unknown Source)
    at org.jopendocument.dom.spreadsheet.Table.getValueAt(Unknown Source)
    at org.jopendocument.dom.spreadsheet.Table.setValueAt(Unknown Source)
    at jOpenDocument.createDocument.main(createDocument.java:48)

"template.ods""true"は、アプリケーションがディレクトリからファイルを取得したことを示し、"true"は空のセルを読み取ることができたことを示します。

しかし、どの配列が例外をスローするのか、なぜ"Unknown Source"と表示されるのかわかりません。

4

2 に答える 2

1

私の意見では、これはより適切です。

sheet.ensureRowCount(row);
于 2015-12-23T10:56:55.743 に答える
1

行の配列は例外をスローします。sheet.setRowCount()セルの内容を設定する前に、さらに行を追加してみてください。

于 2015-05-29T19:49:08.553 に答える