OpenOffice Basic 宏与 openoffice API
Posted
技术标签:
【中文标题】OpenOffice Basic 宏与 openoffice API【英文标题】:OpenOffice Basic macro vs openoffice API 【发布时间】:2020-06-13 12:39:02 【问题描述】:我打算使用 openoffice 基本语言编写 openoffice 宏。我正在努力寻找与 openoffice 文档相关的对象和方法。我用谷歌搜索并找到了一些示例代码和 API 页面 openoffice.org/api 但我找不到 api 中的对象和方法在哪里。 比如阅读这行代码
oSheet=oDoc.Sheets.getByName("Sheet1")
当我提到 API 页面 (openoffice.org/api) 时,名称“表格”中没有方法/对象,getByName。我应该在哪里寻找?
【问题讨论】:
【参考方案1】:简答:
通过接口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
等自省工具也必不可少。这些工具给出了一个对象可用的所有属性和方法的列表,并且由于列表是扁平的,因此不需要深入挖掘另一个接口的继承接口的接口等等。
【讨论】:
谢谢。尤其是引入自省工具。我现在用 X 射线。我可以轻松浏览 API。谢谢。以上是关于OpenOffice Basic 宏与 openoffice API的主要内容,如果未能解决你的问题,请参考以下文章
在 OpenOffice.org BASIC 中引用相邻单元格
将电子表格 (OpenOffice) 导入 Visual Basic .net 组合框