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.
我担心没有比已经给出的更好的答案了.Microsoft Word DOC格式是二进制格式,而诸如DOCX的OpenXML格式是压缩XML文件.OpenXml框架仅用于后者.
正如所建议的,您唯一的另一个选择是使用Word互操作或第三方库来转换DOC - > DOCX,然后您可以使用OpenXml库.
.doc
(如果使用旧版本的 )创建,其结构与(基本上是带有一些 XML 文档的 zip 文件)Microsoft Word
不同。.docx
如果您的文件.doc
是“可解压缩的”(只需将.doc
扩展名重命名为.zip
)即可进行探测,则您必须手动将文件转换.doc
为.docx
.