2009-02-20 17 views
9

Suchen nach einer Möglichkeit zum programmgesteuerten Einfügen von Kommentaren (mithilfe der Kommentarfunktion in Word) an einer bestimmten Position in einem MS Word-Dokument. Ich würde einen Ansatz vorziehen, der in aktuellen Versionen von MS Word-Standardformaten verwendbar und in einer Nicht-Windows-Umgebung (idealerweise mit Python und/oder Common Lisp) implementierbar ist. Ich habe mir das OpenXML SDK angeschaut, kann aber dort keine Lösung finden.Wie programmgesteuert Kommentare in ein Microsoft Word-Dokument einfügen?

Antwort

7

Hier ist, was ich getan habe:

  1. Erstellen Sie ein einfaches Dokument mit Wort (das heißt eine sehr kleine)
  2. Kommentar hinzufügen in Word
  3. Speichern als docx.
  4. Verwenden Sie das Zip-Modul von Python, um auf das Archiv zuzugreifen (docx-Dateien sind ZIP-Archive).
  5. Den Inhalt des Eintrags "word/document.xml" im Archiv ausgeben. Dies ist das XML des Dokuments selbst.

Dies sollte Ihnen eine Idee geben, was Sie tun müssen. Danach können Sie eine der XML-Bibliotheken in Python verwenden, um das Dokument zu analysieren, zu ändern und es zu einem neuen ZIP-Archiv mit der Erweiterung ".docx" hinzuzufügen. Kopieren Sie einfach jeden anderen Eintrag aus dem Original-ZIP und Sie haben ein neues, gültiges Word-Dokument.

Es gibt auch eine Bibliothek, die helfen könnte: openxmllib

2

Wenn dies serverseitig (nicht interaktiv) ist, wird die Verwendung der Word-Anwendung selbst nicht unterstützt (aber ich sehe, dass dies nicht anwendbar ist). Also entweder diese Route nehmen oder die OpenXML SDK verwenden, um das Markup zu lernen, das benötigt wird, um einen Kommentar zu erstellen. Bei diesem Wissen dreht sich alles um die Manipulation von Daten.

Das .docx-Format ist ein ZIP von XML-Dateien mit einer definierten Struktur. Wenn Sie also erst einmal in die ZIP-Datei gelangen und die richtige XML-Datei erhalten, müssen Sie ein XML-DOM modifizieren.

Die beste Route könnte sein, ein docx zu nehmen, es zu kopieren, einen Kommentar (mit Word) zu einem hinzuzufügen und zu vergleichen. Ein Diff zeigt Ihnen die Art von Elementen/Strukturen, die Sie im SDK (oder ISO/Ecma-Standard) nachschlagen müssen.

Verwandte Themen