2009-02-20 6 views
9

Vous cherchez un moyen d'insérer par programme des commentaires (en utilisant la fonctionnalité de commentaires dans Word) dans un emplacement spécifique dans un document MS Word. Je préférerais une approche utilisable à travers les versions récentes des formats standards MS Word et implémentable dans un environnement non-Windows (idéalement en utilisant Python et/ou Common Lisp). J'ai regardé le SDK OpenXML, mais je n'arrive pas à trouver une solution.Comment insérer par programme des commentaires dans un document Microsoft Word?

Répondre

7

Voici ce que je faisais:

  1. Créer un document simple avec mot (à savoir un très petit un)
  2. Ajouter un commentaire dans Word
  3. Enregistrer sous docx.
  4. Utilisez le module zip de python pour accéder à l'archive (les fichiers docx sont des archives ZIP).
  5. Dump le contenu de l'entrée "word/document.xml" dans l'archive. C'est le XML du document lui-même.

Cela devrait vous donner une idée de ce que vous devez faire. Après cela, vous pouvez utiliser l'une des bibliothèques XML en Python pour analyser le document, le modifier et l'ajouter à une nouvelle archive ZIP avec l'extension ".docx". Copiez simplement toutes les autres entrées du ZIP original et vous avez un nouveau document Word valide.

Il existe aussi une bibliothèque qui pourrait vous aider: openxmllib

2

S'il s'agit d'un serveur (non interactif), l'utilisation de l'application Word elle-même n'est pas prise en charge (mais cela ne s'applique pas). Donc soit prendre cette route ou utiliser le OpenXML SDK pour apprendre le balisage nécessaire pour créer un commentaire. Avec cette connaissance, il s'agit de manipuler des données. Le format .docx est un ZIP de fichiers XML avec une structure de définition, donc la plupart du temps une fois que vous entrez dans le ZIP et obtenez le bon fichier XML, il s'agit de modifier un DOM XML.

Le meilleur chemin pourrait être de prendre un docx, le copier, ajouter un commentaire (en utilisant Word) à un, et comparer. Un diff vous montrera le type d'éléments/structures dont vous avez besoin dans le SDK (ou la norme ISO/Ecma).

Questions connexes