正在使用DocumentFormat.OpenXml dll读取.Doc文件
本文关键字:dll 读取 Doc 文件 OpenXml DocumentFormat | 更新日期: 2023-09-27 18:29:54
当我尝试使用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;
}
}
旧.doc文件与新.docx文件的格式完全不同。所以,不,您不能使用OpenXml库来读取.doc文件。
要做到这一点,您需要首先手动转换文件,或者需要使用Office互操作,而不是现在使用的Open XML SDK。
恐怕没有比已经给出的答案更好的答案了。Microsoft Word DOC格式是二进制的,而像DOCX这样的OpenXML格式是压缩的XML文件。OpenXml框架仅用于处理后者。
根据建议,您唯一的其他选择是使用Word互操作或第三方库来转换DOC->DOCX,然后您可以使用OpenXml库。
.doc
(如果使用旧版本的Microsoft Word
创建)与.docx
(基本上是一个包含一些XML文档的zip文件)的结构不同。
如果您的.doc
是"可解压缩的"(只需将.doc
扩展名重命名为.zip
)以进行探测,则必须手动将.doc
转换为.docx
。
您可以使用IFilterTextReader
。
TextReader reader = new FilterReader(path);
using (reader)
{
txt = reader.ReadToEnd();
}
你可以看看http://www.codeproject.com/Articles/13391/Using-IFilter-in-C