2010-05-17 5 views
6

나는 그 순간 꽤 난처한 상황에 처해있다. Can I use Win32 COM to replace text inside a word document?을 바탕으로 필자는 문서 워드 (doc)에서 워드 문서를 생성하는 간단한 템플릿 시스템을 코딩 할 수있었습니다 (파이썬에서).ms 단어 doc의 모든 문자열을 파이썬으로 검색하고 바꾸려면 어떻게합니까?

제 문제는 "텍스트 필드"의 텍스트가 그런 식으로 발견되지 않습니다. Word 자체에서도 모든 것을 검색 할 수있는 옵션이 없습니다. 실제로는 "주 문서"와 "텍스트 필드"중에서 선택해야합니다. Windows 세계에 익숙하지 않아 VBA 문서를 찾아 보았으나 도움이되지 않았습니다 (아마도 "텍스트 필드"가 매우 일반적인 용어이기 때문에).

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) 

이것은 내 코드의 관련 부분입니다. 나는 지금까지 모든 문제를 해결할 수있었습니다 (힌트 : 문자열을 256 자 이상으로 교체하려면 클립 보드 등을 통해해야합니다.)

답변

2

아마도 OpenOffice UNO 구성 요소 기술을 사용하는 API입니다. Python-UNO bridge을 사용하면 헤드리스 모드로 실행중인 OpenOffice 인스턴스에 연결할 수 있습니다. 시작하려면 tutorial을보세요.
시나리오에 대한 과잉 공격 일 수 있지만 매우 강력하고 유연한 솔루션입니다.

+0

아니요, 죄송합니다. MS Word 사용은 필수입니다. – Mark

+0

확인. 그러나 OpenOffice는 MS Word 파일을 아주 잘 처리 할 수 ​​있습니다. 따라서 Word 파일도 처리 할 수 ​​있습니다. doc, ppt, odt 또는 pdf와 같은 다양한 형식의 문서를 생성하기 위해이 브리지를 사용합니다. –

+0

또는 MS Word에서도 처리가 이루어지고 있습니까? –

관련 문제