2010-05-17 18 views
6

Şu anda oldukça şaşırıyorum. Can I use Win32 COM to replace text inside a word document?'a dayanarak, bir şablon sözcüğü doc'dan (Python'da) kelime dokümanları üreten basit bir şablon sistemini kodlayabildim.Bir dizenin tüm yinelemelerini python ile ms word belgesinde nasıl arar ve değiştiririm?

Sorunum, "Metin Alanları" içindeki metnin bu yolu bulamamasıdır. Word'de bile, her şeyi arama seçeneği yoktur - aslında "Ana Belge" ile "Metin Alanları" arasında seçim yapmanız gerekir. Windows dünyasında yeni olmak için VBA dokümanlarına göz atmaya çalıştım ama hiçbir yardım bulamadım (muhtemelen "metin alanı" nın çok yaygın bir terim olduğu için).

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) 

Bu, kodumun ilgili kısmıdır. Şu ana kadar tüm sorunları kendi başıma çözebildim (ipucu: 256 karakterden fazla karakter dizisi ile değiştirmek istiyorsanız, pano vb. Ile bunu yapmak zorundasınız ...)

cevap

2

Belki de OpenOffice'i kullanabilirsiniz. UNO bileşen teknolojisini kullanarak API. Python-UNO bridge ile, başsız modda çalışan bir OpenOffice örneğine bağlanabilirsiniz. Başlamak için tutorial'a bakın.
Bu, senaryonuz için belki de aşırı bir çözümdür, ancak çok güçlü ve esnek bir çözümdür.

+0

Hayır, özür dilerim. MS Word kullanımı zorunludur. – Mark

+0

Tamam. Ancak OpenOffice, MS Word dosyalarını oldukça iyi işleyebilir. Böylece Word dosyalarını da işleyebilirsiniz. Bu köprüyü dokümanlar, ppt, odt veya pdf gibi çeşitli formatlarda oluşturmak için kullanıyorum. –

+0

Veya işlemin MS Word'de yapılması gerekiyor mu? –

İlgili konular