16

OpenOffice 是否有 .NET API?

编辑:是否有适用于 .NET 的 OpenOffice SDK?

4

5 回答 5

8

如果您安装了 OpenOffice,那么您可以使用“OpenOffice SDK”(此处为当前版本)从多个编程环境(包括 .NET)控制该实例。您可以通过这种方式使用 OpenOffice 来完成许多不同的事情;一个示例是将文件从一种文件格式转换为另一种文件格式。这类似于您如何通过 COM 控制 Microsoft Office。

SDK 附带一组 CLI/.NET 绑定,默认安装在(SDK v3.0 的示例)中:

C:\Program Files\OpenOffice.org_3.0_SDK\sdk\cli

我发现 Mark Alexander Bain 的使用 C# 创建 OpenOffice Calc 文档是关于以这种方式控制 OpenOffice 的最直接、实用的介绍性文章。

CLI 绑定主要是非 .NET 对象模型的端口/映射,因此您需要了解非 .NET 特定的 OpenOffice API开发人员指南 之类的内容。

到目前为止,我发现 CLI 绑定和其他文档之间的主要区别在于,通过 CLI 绑定,您可以使用普通的 .NET 转换语法而不是使用 UnoRuntime.queryInterface() 方法将对象转换为新接口。例如,而不是

XComponentLoader xComponentLoader =
    (XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.class, desktop);

只需使用

XComponentLoader xComponentLoader = (XComponentLoader)desktop;

这里还有一些关于 OpenOffice/UNO 的东西如何映射到 CLI 绑定中的 .NET 概念的漂亮技术文档:http: //wiki.services.openoffice.org/wiki/Documentation/DevGuide/ProUNO/CLI/CLI_Language_Binding

于 2009-09-10T22:29:04.617 回答
4

Novel 有一个添加单声道功能的 OOo 分支,因此您可以通过 .Net 在 OOo 中使用这些构建进行脚本编写。OOo(Base 除外)的文档格式是 XML + zip 容器中的资源。如果您需要手动文件操作以外的编程访问,最好的办法是使用带有 COM 互操作的 ActiveX 控件。如果你想在 .Net 中使用 Base 作为数据源,那几乎是不可能的,因为它是一个没有成熟 .net 端口的嵌入式 Java 数据库结构。

于 2008-12-23T20:46:16.857 回答
4

这可能会有所帮助:

“AODL 是 ODF Toolkit 的 .net 模块。该库完全用纯 C# 编写,可用于扩展基于 .net 的软件以支持 OpenDocument 格式。要在您的项目中分别使用 AODL 软件,无需深入了解 OpenDocument 格式本身。了解幕后发生的事情和编写自己的扩展会很有帮助,但如前所述,这不是基本要求。

该模块在 Apache 孵化器过渡期间已被放弃,最近的官方二进制文件或源下载不可用(请参阅新闻组帖子 1新闻组帖子 2新闻组帖子 3

最新的二进制下载是旧的 ADL SourceForge 项目页面中提供的 v1.2.0.1 ,而似乎是导致(也被放弃的)fork 的最新源代码可在 Bitbucket 上找到(文档和变更日志包含在源树读取 v1.3.0.0) 并编译得很好。

将来新的 ODFDOM 中可能会有一个官方的替代方案,它的生成器有一天应该支持 .NET/C#/etc:

ODFDOM 代码生成器用于为 ODFDOM 生成核心类,这些类是 ODF 元素在真实 Java 类上的类型化映射。对于未来,我们还计划使用此生成器为其他编程语言生成 ODFDOM,例如 C# (.NET)。

于 2008-12-23T21:42:21.360 回答
0

取决于你的需要。大多数 OpenOffice 文档格式都是 XML 可读和可创建的。

于 2008-12-23T20:38:26.280 回答
0

.NET Framework 的开放文档格式 API

API 支持OASIS 开放文档格式中定义的开放文档格式标准。ODF .NET 允许您编写应用程序来创建、修改和解析文本文档和电子表格。支持所有版本的 .NET Framework、.NET Compact Framework 和 Mono。

于 2012-09-15T17:03:35.217 回答