gpt4 book ai didi

java - 使用 UNO 将新行插入 LibreOffice writer 表

转载 作者:行者123 更新时间:2023-12-01 10:54:35 25 4
gpt4 key购买 nike

我最近尝试编写一个小型 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);
}

我不确定我是否在这里遗漏了一些东西,或者我是否应该使用不同的函数。

最佳答案

正如 Lyrl 所建议的,这有效:

XTableRows rows = xTable.getRows();

显然XColumnRowRange仅用于电子表格。

注意:使用 Basic 或 Python 就不会出现此问题,因为这些语言不需要 queryInterface。代码很简单:

table = tables.getByName(tblName)
rows = table.getRows()

关于java - 使用 UNO 将新行插入 LibreOffice writer 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33690368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com