Zu Lesen versucht, ein MS-Office Dokument
Ich habe ein Stück code, dass ich mit Lesen MS-Office-Word-Dokumente.
static void ReadMSOfficeWordFile(string file) {
try {
Microsoft.Office.Interop.Word.Application msWordApp = new Microsoft.Office.Interop.Word.Application();
object nullobj = System.Reflection.Missing.Value;
object ofalse = false;
object ofile = file;
Microsoft.Office.Interop.Word.Document doc = msWordApp.Documents.Open(
ref ofile, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj,
ref nullobj);
string result = doc.Content.Text.Trim();
doc.Close(ref ofalse, ref nullobj, ref nullobj);
msWordApp.Quit();
CheckLineMatch(file, result);
}
catch {
RaiseError("Unable to parse file because of MS Office error.", file);
}
}
Habe ich drei Probleme mit diesem.
Ersten - Sie setzt auf MS-Office wird auf jedem system installiert, könnte dies weiter ausführen. Einige Leute bevorzugen Libre Office, aber dies muss noch um gegen MS Office Word-Dokumente.
Zweitens - ich weiß nicht, ob dies auch Arbeit für MS Office 2003 UND MS Office 2007-Dokumente...
Dritte - Es ist LANGSAM. Es ist unerträglich langsam.
SO! Ich nehme an, es MUSS einen besseren Weg, als diese. Ich vermute, dass jemand einen besseren Weg kennen, als das, was ein Anfänger kommt mit. Ich versuche nur, um Lesen Sie den text im Dokument, sonst nichts.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Reaktion auf Ihre "Word-Anwendung offen", müssen Sie sagen, es zu schließen.
Sehen http://msdn.microsoft.com/en-us/library/bb215475(v=office.12).aspx
Bezüglich der "beruht auf der MS Offise installiert wird", verwenden Sie die interop. Also per definition ist es erfordert installiert werden. Sie können in einem der kommerziellen Bibliotheken.
http://www.aspose.com/categories/.net-components/aspose.words-for-.net/default.aspx
http://www.gemboxsoftware.com/document/pricelist
Sind wir in der Lage zu erreichen, eine Menge der Sache mit NPOI, ein open source Projekt, ohne office Zuverlässigkeit.
für z.B. das Lesen von text aus einem word-Dokument kann implementieren unten dargestellt.
Office Interop ist eine option (zu langsam, wie du schon entdeckt) aber Vorsicht: es ist nicht unterstützt von MS im server-wie Szenarien (wie ASP.NET oder ein Windows-Dienst oder ähnliches) - siehe http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2 !
In der Regel einige-Bibliothek wird verwendet, um zu erreichen, was Sie wollen:
Die Bibliothek Ansatz ist in der Regel sehr schnell, nutzbar mit multi-threading, verwendbar in server-Szenarien und kommt mit vielen zusätzlichen Möglichkeiten...
Als für Ihre Zweiten Punkt: mit Interop, die Sie anrufen
Quit
um die Anwendung zu schließen... obwohl manchmal müssen Sie rufen SieSystem.Runtime.InteropServices.Marshal.FinalReleaseComObject
zu (das kann einige unerwünschte Nebenwirkungen siehe http://blogs.msdn.com/b/yvesdolc/archive/2004/04/17/115379.aspx)Können Sie Interesse an diesem Projekt von CodePlex - NetOffice
Aus der website, hier sind einige der wichtigsten features:
Office-integration ohne Einschränkungen version
Alle Methoden, Eigenschaften und Ereignisse der Office-Versionen 2000, 2002, 2003, 2007, 2010 enthalten sind
Syntaktisch und semantisch identisch zu den Microsoft Interop Assemblies