我计划使用openoffice基本语言编写openoffice宏。我正在努力寻找与OpenOffice文档相关的对象和方法。我在Google上搜索并找到了一些示例代码和API页面openoffice.org/api,但我无法找到api中的对象和方法在哪里。例如,阅读此行代码oSheet = oDoc.Sheets.getByName(“ Sheet1”)
当我引用API页面(openoffice.org/api)时,名称“ sheets”中没有方法/对象,即getByName。我应该在哪里找?
简短回答:
可以通过接口com.sun.star.sheet.XSpreadsheetDocument通过名称,索引或枚举获取表。
oSheets = oDoc.getSheets().getByIndex(0)
说明:
那么什么是oDoc.Sheets
?
要真正了解UNO API,最好使用Java。这是一些您不需要阅读的代码,但是我在这里显示了它们,因为结果会有所帮助。
XSpreadsheetDocument xSpreadSheetDocument = UnoRuntime.queryInterface(
XSpreadsheetDocument.class, xComponent);
XSpreadsheets xSpreadsheets = xSpreadSheetDocument.getSheets();
XPropertySet propSet = (XPropertySet)UnoRuntime.queryInterface(
XPropertySet.class, xComponent);
使用这样的代码,我们可以验证getSheets()
在Java中是否有效,但是Sheets()
无效。在属性集中也没有任何名为Sheets
的属性。简而言之,Java中没有Sheets
,因此Sheets
一定不能成为UNO API的一部分。
现在,比Java严格的语言(例如Basic和Python)具有使用UNO的各种快捷方式。一方面,他们不需要queryInterface
来获取特定的对象,因为他们并不关心类型。
另一个快捷方式是它们提供的属性可以用作特定接口方法的替代方法。因此,方法XSpreadsheetDocument.getSheets()
获得快捷方式属性Sheets
。同样,方法XDocumentSupplier.getDocumentProperties()
获得快捷方式属性DocumentProperties
。使用Basic或Python编写时,这两个属性都是oDoc
的成员。
查找信息:
搜索API文档并不容易。在尝试之前,最好先搜索示例代码。 Andrew Pitonyak's macro document包含一组满足许多需求的示例,在Google中进行搜索将显示来自ask.libreoffice.org等网站的示例代码。
此外,自省工具,例如XrayTool
或MRI
是必不可少的。这样的工具提供了对象可用的所有属性和方法的列表,并且由于列表是平面的,因此无需深入研究另一个接口的继承接口的接口,依此类推。