【问题标题】:How can I read MS Office files in a server without installing MS Office and without using the Interop Library?如何在不安装 MS Office 且不使用互操作库的情况下读取服务器中的 MS Office 文件?
【发布时间】:2013-04-16 14:20:43
【问题描述】:

互操作库很慢,需要安装 MS Office。 很多时候你不想在服务器上安装 MS Office。

我想使用Apache POI,但我使用的是 .NET。

我只需要提取文件的文本部分,而不是在 Office 文件中创建或“存储信息”。

我需要告诉你,我有一个非常大的文档库,我无法将它转换为更新的 XML 文件。

我不想为二进制文件编写解析器。 像 Apache POI 这样的库可以为我们做到这一点。不幸的是,它仅适用于 Java 平台。也许我应该考虑用 Java 编写这个应用程序。

我仍然没有在 .NET 中找到 POI 的开源替代方案,我想我会用 Java 编写自己的应用程序。

【问题讨论】:

  • 这个有运气吗?我只是试图打开 Office 文档并解析嵌入的链接并记录它们。我不需要读取权限,但不能选择服务器上的 Interop 和 Office 套件。

标签: java .net apache ms-office office-interop


【解决方案1】:

对于所有 MS Office 版本:

对于新的 Office (2007):

对于旧办公室(2007 年之前):

【讨论】:

  • TX Text 控件只读取单词的文件。你知道其他是否存在吗?
  • @IlyaKochetov - 我正在寻找简单的 Office 文档以获取嵌入式链接,以便为我们的内容所有者进行一些监管。同样的问题,服务器上的互操作是一个糟糕的问题(许可证、安全性等)......你能想到其他什么来简单地解析它们——我根本不需要写功能。
【解决方案2】:

查看Aspose components。它们旨在模仿互操作功能,而无需在服务器上安装完整的 Office。

【讨论】:

    【解决方案3】:

    由于新的 docx 格式本质上是基于 XML 的文件,因此您可以使用标准 XML DOM 技术以编程方式创建和操作它们,只要您了解其结构。

    这些文件基本上是带有备用文件扩展名的 zip 存档。使用 System.IO.Packaging 命名空间来访问文件的内部元素,然后将它们打开到 XmlDocument 以执行操作。

    有可用于执行此操作的示例,SourceForge 上的 Office Open XML 项目可能值得寻找灵感。

    至于较旧的二进制格式,这些是 MS 专有的,您可能从内部获取内容的唯一方法是通过 Office 对象模型(需要安装 Office)或第三方文件转换器/解析器。

    不幸的是,没有任何第一方和原生的 .NET 平台可以处理这些文件。

    【讨论】:

      【解决方案4】:

      您需要对这些文件做什么?如果您只想将它​​们流式传输给用户,那么基本文件流就可以了。如果要创建新文件(可能基于模板)发送给用户,用户可以在 Office 中打开,有多种方式或work-arounds

      如果您实际上将数据保存在 Office 文档中以供您的网站使用,那么您做错了。 Office 文档,甚至 Excel 电子表格和访问数据库,都不是与交互式网站一起使用的合适选择。

      【讨论】:

      • 没有那样的。我需要提取文件的文本部分。谢谢,再见。
      【解决方案5】:

      如果文档是 word 2007 格式,您可以使用 system.io.packaging 库以编程方式与之交互。

      RWendi

      【讨论】:

        【解决方案6】:

        在Java世界里,也有JExcelApi。它写得很清楚,据我所见,比 POI 干净得多。因此,即使将该代码移植到 .NET 也不是不可能的,当然这取决于您是否有足够的时间。

        【讨论】:

          【解决方案7】:

          OpenOffice。

          您可以针对它进行编程并让它为您做很多事情,而无需花钱购买服务器许可证,也无需在您的服务器上安装与它相关的漏洞。

          【讨论】:

            【解决方案8】:

            Microsoft Excel 工作簿可以使用 ODBC 驱动程序(或者它是 OLE DB 驱动程序吗?不记得了)读取,使工作簿看起来像一个数据库表。但我不知道如果没有 Office 套件本身,该驱动程序是否可用。

            【讨论】:

              【解决方案9】:

              您可以使用 OpenOffice。它有一个命令行转换工具:

              Conversion Howto

              简而言之,您在 OpenOffice 中定义一个宏,然后使用命令行调用该宏 OpenOffice 的参数。在该参数中,本地文件(Office 文件)的名称是 编码。

              这不是一个很好的解决方案,但它应该是可行的。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-02-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-09-30
                • 2022-01-26
                相关资源
                最近更新 更多