如何将.doc文件转换为字符串?

4
有没有一种方法可以在不使用Microsoft COM组件的情况下将Microsoft Word文档翻译成字符串?我希望有其他处理过度标记的方法。
编辑12/13/13: 我们不想引用COM组件,因为如果客户没有安装完全相同的Office版本,它就无法工作。幸运的是,Microsoft已经使2013 word.interop.dll向后兼容了。现在我们不必担心这个限制。一旦引用了dll,我们可以执行以下操作:
/// <summary>Gets the content of the word document</summary>
/// <param name="filePath">The path to the word document file</param>
/// <returns>The content of the document</returns>
public string ExtractText(string filePath)
{
    if (string.IsNullOrEmpty(filePath))
        throw new ArgumentNullException("filePath", "Input file path not specified.");

    if (!File.Exists(filePath))
        throw new FileNotFoundException("Input file not found at specified path.", "filepath");

    var resultText = string.Empty;
    Application wordApp = null;

    try
    {
        wordApp = new Application();
        var doc = wordApp.Documents.Open(filePath, Type.Missing, true);
        if (doc != null)
        {
            if (doc.Content != null && !string.IsNullOrEmpty(doc.Content.Text))
              resultText = doc.Content.Text.Normalize();

            doc.Close();
        }
    }
    finally
    {
        if (wordApp != null)
            wordApp.Quit(false, Type.Missing, false);
    }

    return resultText;
}

1
使用C#解析Word文档:http://archworx.wordpress.com/2007/05/10/parsing-word-document-in-c/,这是谷歌给我的 :) - Volker Mauel
3
我无法想象您将富文本格式的文档转换为字符串的意图。但是,我猜您想以某种方式访问纯文本内容。因此,请参阅Codeplex上的docx项目。 - Ondrej Tucny
难道没有一组.NET Office扩展可以处理这样的事情吗? - McKay
1
看起来发帖者想要 .DOC 格式,这与 .DOCX 格式非常不同。 - Mike Christensen
问题在于我们不想要求安装我们软件的服务器必须安装Microsoft Office,并且我们也不想引用(和打包)特定版本的Office.Interop。 - Tresto
显示剩余4条评论
3个回答

2

我认为编写.DOC解析器是不可想象的...购买一个组件来进行转换几乎肯定比花费时间编写转换器更便宜。 - RQDQ
@RQDQ 我同意...尽管我在SO上的经验是,有些人只接受免费组件,而我所知道的旧的.DOC格式没有任何免费组件... - Yahia

1

假设您想提取doc文件的文本内容,有一些命令行工具以及商业库可供使用。我们曾经使用过一个相当古老的工具来搜索doc(而不是docx)文件(与搜索引擎sphider结合使用),该工具是catdoc(也可以在这里找到),它是一个DOS而不是Windows工具,但只要我们满足了先决条件(文件名格式8.3),它就能为我们工作。

如果您能支付29美元,可以使用商业产品doc2txt

对于更新的docx格式,您可以使用基于Perl的工具docx2txt

当然,如果您想从c#运行这些工具,您需要触发外部进程-请查看这里以获得扎实的解释。

一个相对昂贵但非常强大的访问doc和docx内容的工具是Spire.doc,但它做的比你需要的要多得多。由于它是一个.NET库,因此更加方便易用。


0

如果您正在引用旧的DOC文件格式,那么这是一个相当大的问题,因为它是一个由微软指定的二进制文件格式,我必须说我完全同意RQDQ的评论。

但是,如果您正在引用DOCX文件格式,则可以在不使用MS COM组件或任何其他组件的情况下实现此目标,只需使用纯.NET即可。

请查看以下解决方案:

http://www.codeproject.com/Articles/20529/Using-DocxToText-to-Extract-Text-from-DOCX-Files http://www.dotnetspark.com/kb/Content.aspx?id=5633


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