从Microsoft Word中提取数据的最佳方法

时间:2009-03-31 15:31:35

标签: c# ms-word office-interop

软件的发行说明包含一些我想在每个版本中提取的重要数据。有没有办法从Microsoft Word中提取某些信息?

我正在考虑的应用程序将用C#编写,但如果是其他任何解决方案我都没关系。

6 个答案:

答案 0 :(得分:1)

所有MS Office产品(Word,Office等)都是完全可编写脚本的,包括内部(使用VBA)和外部(通过OLE Automation,也称为ActiveX;实际上,VBA使用通过OLE公开的接口)。

我的建议是用您的语言寻找支持此功能的库。 Here是指向Perl模块Win32::OLE的链接,它可以做到:正如您所看到的,它非常易于使用且非常强大。对于其他语言,界面应该类似。

答案 1 :(得分:1)

几年前我经历过这个。你可以:

  1. 使用Word将文件转换为其他格式,ASCII,RTF,XML等。

  2. 使用某些第三方应用转换为其他格式,例如ASCII。

  3. 通过OLE访问Word API并直接提取信息。

  4. 我找不到任何通用库来读取Word文件,然后所有读取Word文件的应用程序只能用于子集。 Word经常改变,以至于他们无法跟上。

    有些文档列出了旧Word文件格式的细节,底层文件结构非常复杂。如果没有大量资源,就很难让代码与文件格式保持同步。

    最初,我使用Perl来驱动Word并创建新文档,但解决方案太脆弱了。后来我将整个应用程序切换为使用PDF,而放弃了Word。

    保罗。

答案 2 :(得分:1)

可能不是最优雅的解决方案,但这似乎是最轻的方法:使用Cscript。

只是在示例文字doc(2003)上尝试过,它完美无缺。

更多信息:http://www.gregthatcher.com/Papers/VBScript/WordExtractScript.aspx

答案 3 :(得分:0)

我使用VSTO(Visual Studio Tools for Office)工具进行了大量的Excel编程,我认为您将能够使用VSTO API来读取文档doc。您应该能够使用C#

答案 4 :(得分:0)

您可以编写IFilter来从word文件中提取文本。无需安装Word。

答案 5 :(得分:0)

您可以在Word(VBA,VSTO)内部或外部工作。

从外部来看,自动化是一种方法。

另一种方法是完全避免使用Word。如果文档是.docx,则可以使用任何可以操作Open XML文件的内容。 Microsoft拥有Open XML SDK,在Java世界中,您可以使用docx4j或POI。