2010-05-17 22 views
6

Jestem całkiem zaskoczony w tej chwili. Na podstawie Can I use Win32 COM to replace text inside a word document? udało mi się zakodować prosty system szablonów, który generuje dokumenty tekstowe z szablonu dokumentu doc ​​(w języku Python).Jak wyszukiwać i zastępować wszystkie wystąpienia ciągu znaków w dokumencie MS Word z pythonem?

Mój problem polega na tym, że tekst w "polach tekstowych" nie znajduje się w ten sposób. Nawet w samym programie Word nie ma opcji przeszukiwania wszystkiego - musisz wybrać między "Dokumentem głównym" i "Pola tekstowe". Będąc nowicjuszem w świecie Windowsa, próbowałem przeglądać dokumenty VBA, ale nie znalazłem żadnej pomocy (prawdopodobnie ze względu na "pole tekstowe" będące bardzo częstym określeniem).

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) 

To jest odpowiednia część mojego kodu. W tej chwili udało mi się samodzielnie obejść wszystkie problemy (podpowiedź: jeśli chcesz zastąpić ciągi zawierające więcej niż 256 znaków, musisz to zrobić za pomocą schowka itp.)

Odpowiedz

2

Może możesz użyć OpenOffice API przy użyciu technologii komponentu UNO. Dzięki Python-UNO bridge możesz połączyć się z instancją OpenOffice działającą w trybie bezgłowym. Spójrz na tutorial, aby rozpocząć.
To może być przesada dla twojego scenariusza, ale jest to bardzo potężne i elastyczne rozwiązanie.

+0

Nie, przepraszam. Używanie MS Word jest obowiązkowe. – Mark

+0

Ok. Ale OpenOffice może obsługiwać pliki MS Word całkiem dobrze. Możesz także przetwarzać pliki Worda. Używam tego mostu do generowania dokumentów w różnych formatach, takich jak doc, ppt, odt lub pdf. –

+0

Czy przetwarzanie jest również wykonywane w MS Word? –