Wie kann ich MS-Office-Dateien in einem Server lesen, ohne MS Office zu installieren und ohne die Interop-Bibliothek zu verwenden?
-
03-07-2019 - |
Frage
Die Interop-Bibliothek ist langsam und benötigt MS Office installiert. Viele Male Sie nicht wollen, MS Office auf Servern installieren.
würde Ich mag Apache POI , aber ich bin auf .NET.
Ich brauche nur den Textteil der Dateien zu extrahieren, nicht zu schaffen, noch „Speicher von Informationen“ in Office-Dateien.
Ich muss Ihnen sagen, dass ich eine sehr große Dokumentbibliothek haben, und ich kann es nicht auf neuere XML-Dateien konvertieren.
Ich will nicht einen Parser für die Binärdateien Dateien schreiben. Eine Bibliothek wie Apache POI tut dies für uns. Leider ist es nur für die Java-Plattform. Vielleicht sollte ich diese Anwendung in Java schreiben berücksichtigen.
Ich bin immer noch nicht eine Open-Source-Alternative zu POI in .NET zu finden, ich glaube, ich werde meine eigene Anwendung in Java schreiben.
Lösung
Für alle MS Office-Versionen:
- Sie könnten die Komponenten von Drittanbietern verwenden, wie TX Text Steuerelemente für Word und TMS Flexcel Studio für Excel
Für das neue Office (2007):
- Sie könnten einige grundlegende Dinge mit .net Funktionalität von
system.io.packaging
zu tun. Sehen Sie, wie unter http://msdn.microsoft.com/en-us/library /bb332058.aspx
Für das alte Amt (vor 2007):
- Die alten Office-Formate sind jetzt dokumentiert: http://www.microsoft.com /interop/docs/officebinaryformats.mspx . Wenn Sie etwas tun, einfach wollen könnten Sie versuchen, es in Betracht ziehen. Aber beachten Sie, dass diese Formate sehr komplex sind.
Andere Tipps
Schauen Sie sich die Aspose Komponenten . Sie sind entworfen, um die Interop-Funktionalität zu imitieren, ohne dass auf einem Server eine vollständige Office installieren.
Da die neuen DOCX-Formate von Natur aus XML-basierten Dateien sind, können Sie erstellen und bearbeiten sie programmatisch mit Standard-XML-DOM-Techniken, wenn Sie wissen, die Struktur.
Die Dateien werden grundsätzlich zip-Archive mit einer alternativen Dateierweiterung. Verwenden Sie den System.IO.Packaging
Namespace Zugriff auf die internen Elemente der Datei zu erhalten, öffnen Sie sie in eine XmlDocument
die Manipulation durchzuführen.
Es gibt Beispiele zur Verfügung, dies zu tun, und das Office Open XML-Projekt auf Source kann Blick auf Inspiration wert sein.
Wie bei den älteren Binärformaten, waren diese MS proprietär, und der einzige Weg, die Sie wahrscheinlich von innen auf den Inhalt zu bekommen, ist durch das Office-Objektmodell (erfordert eine Installation von Office) oder einem Dritten Datei-Konverter / Parser.
Leider gibt es nichts erste Partei und stammt aus der .NET-Plattform mit diesen Dateien zu arbeiten.
Was brauchen Sie mit diesen zu tun, Datei? Wenn Sie nur an den Benutzer streamen möchten, dann sind die grundlegenden Dateiströme in Ordnung. Wenn Sie neue Dateien erstellen wollen (vielleicht auf der Grundlage einer Vorlage) an den Benutzer zu senden, die der Benutzer in Office öffnen kann, gibt es eine Vielzahl oder Umgehungen .
Wenn Sie tatsächlich Daten in Office-Dokumente für die Nutzung durch Ihre Website zu halten, Sie tun es falsch. Office-Dokumente, auch Excel-Tabellen und Datenbanken zugreifen, sind nicht wirklich eine geeignete Wahl für die Verwendung mit einer interaktiven Website.
Wenn das Dokument in Word 2007-Format ist, können Sie die System.IO.Packaging Bibliothek verwenden programmatisch mit ihr zu interagieren.
In Java-Welt gibt es auch JExcelAPI . Es ist sehr klar geschrieben, von dem, was ich sehen konnte, viel sauberer dann POI. Vielleicht sogar ein Port dieses Codes zu .NET ist nicht außer Frage, abhängig natürlich Sie auf Ihre Hände genug Zeit haben.
Open Office.
Sie können dagegen programmieren und haben es für Sie viel zu tun, ohne für den Server auf einer Lizenz, das Geld ausgeben, oder die Verletzlichkeit mit ihm auf dem Server zugeordnet sein.
Microsoft Excel-Dateien können mit einem ODBC-Treiber (oder ist es ein OLE DB-Treiber? Kann mich nicht erinnern) gelesen werden, dass die Arbeitsmappe wie einer Datenbanktabelle aussehen lässt. Aber ich weiß nicht, ob das Fahrer ohne die Office-Suite selbst zur Verfügung steht.
Sie können Openoffice verwenden. Es verfügt über eine Befehlszeilenkonvertierungstool:
Kurz gesagt, definieren Sie einen Makro in Openoffice und das nennt du Makro mit einer Befehlszeile Argument zu Openoffice. In diesem Argument ist der Name der lokalen Datei (die Office-Datei) codiert.
Es ist keine große sollution, aber es sollte bearbeitbar sein.