2008-12-23 116 views

回答

3

Novel有一個OOo的分支,它增加了單聲道功能,因此您可以使用這些版本通過OOo中的.Net進行腳本編寫。 OOo的文檔格式(Base除外)是一個zip容器中的XML +資源。如果您需要手動文件操作以外的編程訪問,則最好的辦法是使用COM Interop的ActiveX控件。如果你想在.Net中使用Base作爲數據源,這幾乎是不可能的,因爲它是一個沒有成熟的.net端口的嵌入式Java數據庫結構。

0

取決於您的需求。大多數OpenOffice文檔格式都是XML可讀的,並且是可創建的。

4

This might help:

「AODL是ODF工具包 的.NET模塊,該庫是完全地 用純C#和可以用來 您的基於.NET的軟件擴展到 支持開放文檔格式。要在項目內 使用AODL 分別軟件不存在 OpenDocument格式本身的深刻knowlegde的需要 。這將 是有益的理解發生了什麼事情 背後場景和編寫你自己的擴展名 ,但前面提到的 這不是基本的 要求。「

該模塊Apache孵化器轉變過程中被拋棄,最近官方二進制或源下載不可用(見newsgroup post 1newsgroup post 2newsgroup post 3

最新下載的二進制裏面是v1.2.0.1可用而old ADL SourceForge project page,而似乎是最近的源代碼導致(廢棄了)fork is available on Bitbucket(源代碼樹中包含的文檔和更新日誌讀取v1.3.0.0)並編譯得很好。

未來可能會有一個在新的ODFDOM,其發電機官方替代應該支持.NET/C#/等1天:

的ODFDOM碼發生器用於產生 ODFDOM核心類它們是ODF的類型化的映射元素在真正的Java 類。爲了將來我們還計劃生成ODFDOM,例如C#(.NET )適用於使用此生成器的其他編程語言。

7

如果您已經安裝了OpenOffice的,那麼你可以使用「OpenOffice的SDK」(current version here)從多個編程環境,包括.NET控制該實例。您可以通過這種方式使用OpenOffice來完成許多不同的事情;一個例子是將文件從一種文件格式轉換爲另一種文件格式這與您如何通過COM控制Microsoft Office類似。

一組CLI/.NET綁定隨SDK一起提供,默認安裝在(SDK v3示例中。0):

C:\ Program Files文件\ OpenOffice.org_3.0_SDK \ SDK \ CLI

我發現馬克·亞歷山大·貝恩的Creating an OpenOffice Calc Document with C#是最簡單的,動手,介紹文章以這種方式來控制OpenOffice。

CLI綁定通常是非.NET對象模型的端口/映射,因此您需要進入非特定於.NET的OpenOffice API Developer's Guide

到目前爲止,我發現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

+0

貝恩的鏈接需要更新[用C#創建OpenOffice Calc文檔](http://suite101.com/a/creating-an-openoffice-calc-document-with-c-a124112) – tinstaafl 2014-01-09 00:18:44

0

Open Document Format API for .NET Framework

API支持開放文檔格式標準作爲限定d在OASIS Open Document Format。 ODF .NET允許您編寫應用程序來創建,修改和分析文本文檔和電子表格。支持所有版本的.NET Framework,.NET Compact Framework和Mono。