我该如何在服务器上阅读MS Office文件,而不需要安装MS Office或使用Interop库?

5

Interop库速度较慢,需要安装MS Office。很多时候你不想在服务器上安装MS Office。

我想使用Apache POI,但我在.NET上。

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

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

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

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


这个问题解决了吗?我只是想打开Office文档并解析嵌入的链接并记录它们。我不需要读取访问权限,但在服务器上使用Interop和Office套件不是一个选项。 - one.beat.consumer
9个回答

3

对于所有 MS Office 版本:

对于新版 Office(2007):

对于旧版 Office(2007 以前):


TX文本控件只能读取Word文件。你知道是否还有其他的吗? - Luca Molteni
@IlyaKochetov - 我想要简单地搜索Office文档中的嵌入链接,以便为我们的内容所有者进行一些管理。同样的问题,服务器上的互操作性是一个糟糕的问题(许可证、安全等)...你能想到其他什么方法来简单地解析它们吗?我根本不需要写入功能。 - one.beat.consumer

2
由于新的docx格式本质上是基于XML的文件,一旦您了解了结构,就可以使用标准的XML DOM技术对其进行编程创建和操作。
这些文件基本上是带有替代文件扩展名的zip归档文件。使用System.IO.Packaging命名空间来访问文件的内部元素,然后将它们打开到XmlDocument中以执行操作。
有关如何执行此操作的示例可用,并且值得参考SourceForge上的Office Open XML项目。
至于旧的二进制格式,这些是专有的MS格式,您可能唯一能够通过Office对象模型(需要安装Office)或第三方文件转换器/解析器来访问其中的内容。
不幸的是,在.NET平台上没有一级和本地的工具可用来处理这些文件。

2

请查看Aspose组件。它们旨在模仿Interop功能,而无需在服务器上安装完整的Office。


1

你需要对这些文件做什么?如果你只是想将它们流式传输给用户,那么基本的文件流就可以了。如果你想创建新文件(也许基于模板)发送给用户,用户可以在Office中打开,那么有各种解决方法

如果你实际上是将数据保存在Office文档中供网站使用,那么你的做法是错误的。即使是Excel电子表格和Access数据库,Office文档也不是与交互式网站配合使用的合适选择。


没有这样的。我需要提取文件中的文本部分。谢谢,再见。 - Luca Molteni

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

RWendi


1
在Java世界中,也有JExcelApi。从我所看到的来看,它写得非常清晰,比POI要干净得多。因此,如果你有足够的时间,甚至可以将该代码移植到.NET上。

0

OpenOffice.

你可以针对它进行编程,并使它为你完成很多工作,而不必花费购买服务器许可证的资金,或在您的服务器上面临与之相关的漏洞。


0

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


0

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

转换指南

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

这不是一个很好的解决方案,但应该可以使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接