IndexOutOfBoundException при попытке получить ячейку.ods с помощью 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. Я хочу заполнить существующий 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" - чтобы оно могло прочитать ячейку, которая является пустой.
Но я не знаю, какой массив выдает исключение и почему он говорит "Неизвестный источник".
2 ответа
Решение
Массив строк выдает исключение. Попробуйте добавить больше строк с sheet.setRowCount()
перед настройкой содержимого ячейки.
Вы можете использовать sureRowCount, который, на мой взгляд, более уместен:
sheet.ensureRowCount(row);