简短的回答:
通过接口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
。简而言之,Sheets
Java 中没有,所以Sheets
一定不能成为 UNO API 的一部分。
现在,比 Java 不那么严格的语言(例如 Basic 和 Python)具有各种使用 UNO 的快捷方式。一方面,他们不需要queryInterface
获取特定的对象,因为他们不关心类型。
另一个捷径是它们提供的属性可以用来替代特定接口的方法。因此,该方法XSpreadsheetDocument.getSheets()
获得了一个快捷方式属性Sheets
。同样,该方法XDocumentSupplier.getDocumentProperties()
获得一个快捷方式属性DocumentProperties
。这两个属性都是oDoc
使用 Basic 或 Python 编写时的成员。
查找信息:
搜索 API 文档并不容易。在尝试之前,最好搜索示例代码。Andrew Pitonyak 的宏文档包含一组涵盖许多需求的示例,在 Google 中搜索会显示来自ask.libreoffice.org等网站的示例代码。
此外,内省工具(例如XrayTool
or MRI
)是必不可少的。这样的工具给出了一个对象可用的所有属性和方法的列表,并且由于列表是扁平的,因此不需要深入挖掘另一个接口的继承接口的接口等等。