0

我打算使用 openoffice 基本语言编写 openoffice 宏。我正在努力寻找与 openoffice 文档相关的对象和方法。我用谷歌搜索并找到了一些示例代码和 API 页面 openoffice.org/api 但我找不到 api 中的对象和方法在哪里。例如阅读这行代码

oSheet=oDoc.Sheets.getByName("Sheet1")

当我引用 API 页面(openoffice.org/api)时,名称“表格”中没有方法/对象,getByName。我应该去哪里寻找?

4

1 回答 1

0

简短的回答

通过接口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。简而言之,SheetsJava 中没有,所以Sheets一定不能成为 UNO API 的一部分。

现在,比 Java 不那么严格的语言(例如 Basic 和 Python)具有各种使用 UNO 的快捷方式。一方面,他们不需要queryInterface获取特定的对象,因为他们不关心类型。

另一个捷径是它们提供的属性可以用来替代特定接口的方法。因此,该方法XSpreadsheetDocument.getSheets()获得了一个快捷方式属性Sheets。同样,该方法XDocumentSupplier.getDocumentProperties()获得一个快捷方式属性DocumentProperties。这两个属性都是oDoc使用 Basic 或 Python 编写时的成员。

查找信息

搜索 API 文档并不容易。在尝试之前,最好搜索示例代码。Andrew Pitonyak 的宏文档包含一组涵盖许多需求的示例,在 Google 中搜索会显示来自ask.libreoffice.org等网站的示例代码。

此外,内省工具(例如XrayToolor MRI)是必不可少的。这样的工具给出了一个对象可用的所有属性和方法的列表,并且由于列表是扁平的,因此不需要深入挖掘另一个接口的继承接口的接口等等。

于 2020-06-13T19:53:36.893 回答