Lesen .Doc-Datei mit DocumentFormat.OpenXml-dll
Wenn ich versuche zu Lesen .doc-Datei mit DocumentFormat.OpenXml dll-seine geben Fehler wie "die Datei enthält beschädigte Daten."
Diese dll liest .docx-Datei korrekt.
Kann DocumentFormat.OpenXml-dll - - Hilfe bei der Lektüre .doc-Datei?
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;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den alten .doc-Dateien haben ein völlig anderes format als die neuen .docx-Dateien. Also, Nein, Sie können nicht verwenden Sie die OpenXml-Bibliothek zu Lesen .doc-Dateien.
Zu tun, dass, würden Sie entweder müssen Sie manuell konvertieren Sie die Dateien zuerst, oder würden Sie brauchen, zu verwenden Office-interop, anstelle des Open XML SDK, die Sie verwenden jetzt.
Fürchte ich, wird es keine bessere Antwort als die, die bereits gegeben. Das Microsoft Word DOC-format ist Binär, während OpenXML-Formate wie DOCX sind gezippte XML-Dateien. Die OpenXml-framework für die Arbeit mit der letzteren nur.
Vorgeschlagen, die einzige andere option, die Sie haben, um Word-interop oder Drittanbieter-Bibliothek zum konvertieren von DOC -> DOCX, die Sie können dann mit der OpenXml-Bibliothek.
.doc
(Wenn erstellt mit einer älteren version vonMicrosoft Word
) nicht die gleiche Struktur wie eine.docx
(Das ist im Grunde eine zip-Datei mit einigen XML-Dokumenten).Wenn Ihr
.doc
ist 'abzippbare' (Nur benennen Sie die.doc
Erweiterung.zip
) zu untersuchen, müssen Sie manuell konvertieren Sie die.doc
zu einem.docx
.Können Sie
IFilterTextReader
.Können Sie einen Blick auf http://www.codeproject.com/Articles/13391/Using-IFilter-in-C