【问题标题】:How to create .odt files with C#.NET?如何使用 C#.NET 创建 .odt 文件?
【发布时间】:2010-09-18 10:27:51
【问题描述】:

注意:我找到了这个"Creating a Word Doc in C#.NET",但这不是我想要的。

你知道如何创建一个 .odt 来从 C# .NET 创建文件吗?
是否有用于 OpenOffice.org 库的 .NET 组件或包装器来执行此操作?

【问题讨论】:

    标签: c# document openoffice.org


    【解决方案1】:

    看看 AODL(见 http://odftoolkit.org/projects/odftoolkit/pages/AODL)。

    • 完全托管的 .NET 1.1(因此它可以在 MS.Net 和 Mono 上运行)
    • 支持文本和电子表格文档
    • 创建、读取、编辑、保存文档
    • ...

    由 kame 编辑: 新链接 AODL-Wiki

    【讨论】:

    • AODL for .NET 正式版不再可用。但是您仍然可以使用一些叉子。我发现的最好的分支(作者的附加修复)是aodl-reloadedaodl。但我知道使用当前版本的 OpenOffice/LibreOffice 仍然存在一些问题。
    【解决方案2】:

    您可以查看OASIS Standards site 以获取有关 ODT 标准的信息。据我所知,他们使用的是基于 XML 的标准,并且有一个可用于文档标准的 XSD,因此您可以将它与您自己的代码结合使用,以正确格式构建文档文件。

    【讨论】:

      【解决方案3】:

      您可能对OpenOffice, UNO CLI Language Binding 感兴趣。

      【讨论】:

        【解决方案4】:

        我昨天在寻找一种创建电子表格的方法时发现了这个,看起来创建编写器文件非常相似: http://www.suite101.com/content/creating-an-openoffice-calc-document-with-c-a124112,别忘了先从 Oracle 安装 Open Office SDK。

        很遗憾,我还没有找到无需打开文件即可创建文件的方法。

        【讨论】:

          【解决方案5】:

          代码如下所示:

          private XComponentContext oStrap = uno.util.Bootstrap.bootstrap();
          XMultiServiceFactory oServMan = (XmultiServiceFactory) oStrap.getServiceManager();
          XComponentLoader oDesk = (XComponentLoader) oServMan.createInstance("com.sun.star.frame.Desktop");
          string url = @"private:factory/swriter";
          PropertyValue[] propVals = new PropertyValue[0];
          XComponent oDoc = oDesk.loadComponentFromURL(url, "_blank", 0, propVals);
          string docText = "File Content\n\r";
          ((XTextDocument)oDoc).getText().setString(docText);
          string fileName = @"C:\FolderName\FileName.odt";
          fileName = "file:///" + fileName.Replace(@"\", "/");
          ((XStorable)oDoc).storeAsURL(fileName, propVals);
          ((Xcomponent)oDoc).dispose();
          

          【讨论】:

            【解决方案6】:

            OpenOffice 文档 (odt) 是 ZIP 文件。您可以解压缩现有的文件,通过代码修改 content.xml 文件,然后使用 System.IO.Compression 中的 ZipFile 类再次获取 zip 文件。 Open Office Specification

            【讨论】:

            猜你喜欢
            • 2013-08-28
            • 1970-01-01
            • 1970-01-01
            • 2018-12-11
            • 1970-01-01
            • 1970-01-01
            • 2019-04-18
            • 2018-02-12
            相关资源
            最近更新 更多