简答:
通过接口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 等自省工具也必不可少。这些工具给出了一个对象可用的所有属性和方法的列表,并且由于列表是扁平的,因此不需要深入挖掘另一个接口的继承接口的接口等等。