Beste Möglichkeit, ein Word-Dokument zu verarbeiten

8

Ich empfange Word-Dokumente mit spezifizierten Formatierungen, die den darin enthaltenen Daten entsprechen. Zum Beispiel haben alle Header genau die gleiche Formatierung (Times New Roman-Font 14-Bold).

Was ist der beste Weg, um solche MS Word-Dokumente (.doc oder .docx) in XML-Dokumente zu verarbeiten? Sprache ist kein Problem (ich werde Lisp / Boost.Spirit verwenden, wenn ich muss!).

    
Mikhail 24.11.2010, 02:08
quelle

5 Antworten

1

Verwendet eine sehr ineffiziente bedingte Suche in VBA, um das Dokument in ein zweites Dokument zu kopieren. Das zweite Dokument wurde dann mit der Erweiterung .xml gespeichert. Hat den Job erledigt, aber es ist hässlich.

    
Mikhail 25.05.2011, 19:51
quelle
7

Sehen Sie sich die python-docx Bibliothek an.

    
Etienne 24.11.2010 14:14
quelle
2

Also, ich glaube, Sie sagen, dass die Struktur des Dokuments in der Formatierung kodiert ist und Sie XML-Dateien erzeugen wollen, die diese Struktur erfassen, während der Inhalt im Klartext bleibt?

Wenn dies der Fall ist, müssen Sie die Dokumente analysieren und eine Datenstruktur erstellen, die verarbeitet werden kann, und dann als XML ausgegeben werden.

Zum Parsen gibt es ein paar Optionen. Microsoft hat die Spezifikationen für ihr binäres .doc-Format veröffentlicht, deren Ablesen wesentlich sein wird schreibe einen Parser dafür. Im Fall von .docx haben Sie ein wenig mehr Glück, da es bereits im XML-Format vorliegt. Sie können also jede XML-Parsing-Bibliothek zum Einlesen der Datei verwenden und dann den resultierenden Baum nach den Daten durchsuchen, die Sie interessieren. XML Parser sind für fast jede Sprache verfügbar, eine leicht zu verwendende ist MiniDom für Python.

>

Für die Erzeugung Ihrer Ausgabe-XML scheint wieder eine Objekt-Repräsentation zu XML-Bibliothek die richtige Wahl zu sein, MiniDom zum Beispiel auch.

Wenn Sie nicht mit dem Schreiben eines eigenen .doc-Parsers arbeiten möchten, können Sie die Dokumente über einen Konverter ausführen, der zuerst ein besser zugängliches Format erstellt - z. B. mithilfe von Word, um die .doc-Dateien in .docx zu konvertieren. oder ein Tool, das RDFs aus .docs erzeugt, oder Sie könnten einen vorhandenen Wortparser wie den in OpenOffice verwenden.

    
David Claridge 24.11.2010 02:54
quelle
0

Sie können auch Java-basierte Apache POI - HWPF ausprobieren. Es unterstützt Text Extraktion . Sie müssen dann Ihr eigenes XML-Dokument erstellen, Caster XML oder Xstream kann Ihnen bei diesem Problem helfen.

    
n002213f 24.11.2010 05:02
quelle
0

Es hängt wirklich davon ab, was Sie genau machen.

Am einfachsten wäre es, das Dokument als Flat-OPC-XML zu speichern (in Word, "Speichern unter ..." XML) und dann eine XSLT anzuwenden.

Dieser Ansatz ist am einfachsten, da er Ihnen das gesamte docx als eine einzige XML-Datei zur Verfügung stellt, so dass Sie es nicht entpacken müssen usw.

Wenn Ihre Anforderungen komplexer sind, zum Beispiel die Formatierung oder Stile analysieren oder etwas mit Hyperlinks tun, dann ein Objektmodell wie docx4j (Java) oder Open XML SDK (C #) - und zweifellos gibt es andere - kann helfen.

    
JasonPlutext 25.11.2010 00:25
quelle