尝试使用jOpenDocument获取.ods单元格时的IndexOutOfBoundException

时间:2015-05-29 18:04:47

标签: java jopendocument

我的编码面临一点挑战。

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
  真

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”表示它可以读取细胞,是空的。

但我不知道哪个Array会抛出异常,为什么它会说“Unknown Source”

2 个答案:

答案 0 :(得分:1)

行数组会引发异常。在设置单元格内容之前,请尝试使用sheet.setRowCount()添加更多行。

答案 1 :(得分:1)

您可以使用ensureRowCount,这在我看来更合适:

XYZ