2009-02-20 19 views
9

Buscando una forma de insertar comentarios mediante programación (usando la función de comentarios en Word) en una ubicación específica en un documento de MS Word. Preferiría un enfoque que se pueda usar en las versiones recientes de los formatos estándar de MS Word y se pueda implementar en un entorno que no sea de Windows (lo ideal sería usar Python y/o Common Lisp). He estado mirando el SDK de OpenXML pero parece que no puedo encontrar una solución allí.¿Cómo insertar comentarios mediante programación en un documento de Microsoft Word?

Respuesta

7

Esto es lo que hice:

  1. Crear un documento sencillo con la palabra (es decir, uno muy pequeño)
  2. Añadir un comentario en Word
  3. Guardar como docx.
  4. Utilice el módulo zip de python para acceder al archivo (los archivos docx son archivos ZIP).
  5. Vuelque el contenido de la entrada "word/document.xml" en el archivo. Este es el XML del documento en sí.

Esto debería darle una idea de lo que debe hacer. Después de eso, puede usar una de las bibliotecas XML en Python para analizar el documento, cambiarlo y agregarlo a un nuevo archivo ZIP con la extensión ".docx". Simplemente copie todas las demás entradas del ZIP original y tendrá un nuevo documento de Word válido.

También hay una biblioteca que podría ayudar: openxmllib

2

Si esto es del lado del servidor (no interactivo) el uso de la aplicación de Word en sí no es compatible (pero veo que esto no es aplicable). Por lo tanto, tome esa ruta o use el OpenXML SDK para conocer el marcado necesario para crear un comentario. Con ese conocimiento, todo se trata de manipular datos.

El formato .docx es un archivo ZIP de archivos XML con una estructura define, por lo que una vez que ingresa al ZIP y obtiene el archivo XML correcto, se convierte en una cuestión de modificar un DOM XML.

La mejor ruta puede ser tomar un docx, copiarlo, agregar un comentario (usando Word) a uno, y comparar. Un diff le mostrará el tipo de elementos/estructuras que necesita buscar en el SDK (o estándar ISO/Ecma).

Cuestiones relacionadas