使用DocumentFormat.OpenXml dll读取.Doc文件

Sha*_*oni 11 c# ms-word openxml openxml-sdk

当我尝试使用DocumentFormat.OpenXml dll读取.doc文件时,它给出的错误为"文件包含损坏的数据".

这个DLL正在正确读取.docx文件.

DocumentFormat.OpenXml dll可以帮助读取.doc文件吗?

string path = @"D:\Data\Test.doc";
string searchKeyWord = @"java";

private bool SearchWordIsMatched(string path, string searchKeyWord)
{
    try
    {
       using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(path, true))
       {
           var text = wordDoc.MainDocumentPart.Document.InnerText;
           if (text.Contains(searchKeyWord))
               return true;
           else
               return false;
       }
     }
     catch (Exception ex)
     {
         throw ex;
     }
}
Run Code Online (Sandbox Code Playgroud)

svi*_*ick 14

旧的.doc文件与新的.docx文件格式完全不同.所以,不,你不能使用OpenXml库来读取.doc文件.

要做到这一点,您需要先手动转换文件,或者需要使用Office互操作,而不是现在使用的Open XML SDK.


Ada*_*dam 5

我担心没有比已经给出的更好的答案了.Microsoft Word DOC格式是二进制格式,而诸如DOCX的OpenXML格式是压缩XML文件.OpenXml框架仅用于后者.

正如所建议的,您唯一的另一个选择是使用Word互操作或第三方库来转换DOC - > DOCX,然后您可以使用OpenXml库.


Ale*_*lex 3

.doc(如果使用旧版本的 )创建,其结构与(基本上是带有一些 XML 文档的 zip 文件)Microsoft Word不同。.docx

如果您的文件.doc是“可解压缩的”(只需将.doc扩展名重命名为.zip)即可进行探测,则您必须手动将文件转换.doc.docx.