我最近尝试编写一个小的java文件,它会将一行插入到.odt文档中已存在的表中。表本身有4行3列,但我想实现一个检查,如果要插入的内容大于4,将扩展该表。但是,每次我尝试获取表的行时,它返回一个空指针。我对UNO api并不熟悉,但据我阅读文档,应该在这种情况下使用类XColumnsAndRowRange。我的代码如下:
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);
}
我不确定我在这里遗漏了什么,或者我是否应该使用不同的功能。
答案 0 :(得分:1)
正如Lyrl所说,这有效:
XTableRows rows = xTable.getRows();
显然XColumnRowRange仅用于电子表格。
注意:使用Basic或Python时,您不会遇到此问题,因为这些语言不需要queryInterface
。代码只是:
table = tables.getByName(tblName)
rows = table.getRows()