2010-05-17 13 views
6

Estoy bastante perplejo en este momento. Basado en Can I use Win32 COM to replace text inside a word document?, pude codificar un sistema de plantilla simple que genera documentos de palabras a partir de una plantilla Word Doc (en Python).¿Cómo busco y reemplazo todas las ocurrencias de una cadena en un documento de ms word con python?

Mi problema es que el texto en "Campos de texto" no se encuentra de esa manera. Incluso en Word no hay ninguna opción para buscar todo: en realidad debe elegir entre "Documento principal" y "Campos de texto". Como soy nuevo en el mundo de Windows, traté de buscar los documentos de VBA pero no encontré ayuda (probablemente debido a que el "campo de texto" es un término muy común).

word.Documents.Open(f) 
wdFindContinue = 1 
wdReplaceAll = 2 
find_str = '\{\{(*)\}\}' 
find = word.Selection.Find 

find.Execute(find_str, False, False, True, False, False, \ 
True, wdFindContinue, False, False, False) 

while find.Found: 
    t = word.Selection.Text.__str__() 
    r = process_placeholder(t, answer_data, question_data) 

    if type(r) == dict: 
     errors.append(r) 
    else: 
     find.Execute(t, False, True, False, False, False, \ 
     True, False, False, r, wdReplaceAll) 

Esta es la parte relevante de mi código. Ya pude solucionar todos los problemas por mi cuenta (sugerencia: si quieres reemplazar cadenas con más de 256 caracteres, tienes que hacerlo en el portapapeles, etc.)

Respuesta

2

Quizás puedas usar OpenOffice API utilizando la tecnología de componentes UNO. Con el Python-UNO bridge puede conectarse a una instancia de OpenOffice que se ejecuta en modo sin cabeza. Mira el tutorial para comenzar.
Esto es quizás una exageración para su escenario, pero es una solución muy poderosa y flexible.

+0

No, lo siento. El uso de MS Word es obligatorio. – Mark

+0

Ok. Pero OpenOffice puede manejar archivos de MS Word bastante bien. Para que pueda procesar archivos de Word también. Utilizo este puente para generar documentos en varios formatos, como doc, ppt, odt o pdf. –

+0

¿O el procesamiento debe hacerse en MS Word también? –

Cuestiones relacionadas