Wie kann ich MS-Office-Dateien in einem Server lesen, ohne MS Office zu installieren und ohne die Interop-Bibliothek zu verwenden?

StackOverflow https://stackoverflow.com/questions/153079

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.

War es hilfreich?

Lösung

Für alle MS Office-Versionen:

Für das neue Office (2007):

Für das alte Amt (vor 2007):

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.

RWendi

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:

Conversion Howto

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top