Я недавно попытался закодировать небольшой файл java, который вставляет строку в уже существующую таблицу в документе .odt. Сама таблица имеет 4 строки и 3 столбца, но я хотел бы реализовать проверку, которая расширит эту таблицу, если содержимое, которое нужно вставить, больше 4. Однако каждый раз, когда я пытаюсь получить строки таблицы, он возвращает нулевой указатель. Я не знаком с UNI api, но, насколько я прочитал документацию, в этой ситуации следует использовать класс XColumnsAndRowRange. Мой код выглядит следующим образом:Вставить новую строку в таблицу писателя LibreOffice, используя UNO
XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, xTextDocument);
XNameAccess xNamedTables = xTablesSupplier.getTextTables();
try {
Object table = xNamedTables.getByName(tblName);
XTextTable xTable = (XTextTable) UnoRuntime.queryInterface(XTextTable.class, table);
XCellRange xCellRange = (XCellRange) UnoRuntime.queryInterface(XCellRange.class, table);
if(flag){
XColumnRowRange xCollumnAndRowRange =(XColumnRowRange)
UnoRuntime.queryInterface(XColumnRowRange.class, xCellRange);
XTableRows rows = xCollumnAndRowRange.getRows();
System.out.println("Testing if this works");
rows.insertByIndex(4, size-4);
}
Я не уверен, что мне что-то не хватает или я должен использовать другую функцию.
Я не знаком с Java, так что не обязательно, но в вашем коде, где переменная 'size' получает свою ценность? Не имеет значения, если вы используете метод 'rows.getCount()' для получения текущего количества строк? – Lyrl
Переменная размера указана до этого фрагмента кода. Он определяет размер значений, которые будут вставлены (т. Е. 5 значений или 100 значений). значение строк будет возвращать null каждый раз, поскольку переменная xCollumnAndRowRange также равна нулю. Вот почему я подумал, что, возможно, объект неправильный или что-то еще должно быть использовано –
Что произойдет, если вы 'XTableRows rows = xTable.getRows()'? – Lyrl