【发布时间】:2016-02-14 21:28:05
【问题描述】:
我最近尝试编写一个小型 java 文件,该文件将在 .odt 文档中的现有表中插入一行。该表本身有 4 行和 3 列,但我想实现一个检查,如果要插入的内容大于 4,它将扩展该表。但是,每次我尝试获取表的行时,它都会返回一个 null指针。我对 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);
}
我不确定我是否在这里遗漏了什么,或者我是否应该使用不同的功能。
【问题讨论】:
-
我不熟悉 Java,所以不确定 - 但在您的代码中,变量
size的价值在哪里?如果使用rows.getCount()方法获取当前行数有什么区别吗? -
大小变量在此代码的 sn-p 之前给出。它确定将插入的值的大小(即 5 个值或 100 个值)。由于变量 xCollumnAndRowRange 也为 null,因此 rows 值每次都将返回 null。这就是为什么我认为对象可能不正确或必须使用其他东西的原因
-
如果你
XTableRows rows = xTable.getRows()会发生什么? -
谢谢Lyrl。这确实有效。它现在返回正确的行数,没有空指针。
标签: java libreoffice uno