2014-12-12 3 views
1

와 Word 문서에서 텍스트의 스타일을 변경할 수 없습니다 나는 텍스트내가 파이썬 DOCX

안녕하세요을 포함하는 워드 문서를 만들었습니다. 빚진 $ {debt}. 곧 다시 돌려주세요.

(Times New Roman 크기 12). 파일 이름은 debtTemplate.docx입니다. {debt}을 python-docx를 사용하여 실제 숫자 (1.20)로 바꾸고 싶습니다. 나는 시도 그 코드 다음

from docx import Document 

document = Document("debtTemplate.docx") 
paragraphs = document.paragraphs 

debt = "1.20" 

paragraph = paragraphs[0] 
text = paragraph.text 
newText = text.format(debt=debt) 
paragraph.clear() 
paragraph.add_run(newText) 

document.save("debt.docx") 

이 원하는 텍스트를 새 문서를 초래하지만, Calabri 글꼴 크기 11에 내가 원래처럼되고 글꼴을 싶습니다 타임즈 새로운 로마 크기 12

paragraph.add_run()에 스타일 변수를 추가 할 수 있다는 것을 알고 있으므로 아무 것도 시도하지 않았습니다. 예 : paragraph.add_run(newText,style="Strong")도 아무 것도 변경하지 않았습니다.

내가 할 수있는 것을 아는 사람이 있습니까?

편집 : 여기에 수정 된 버전의 코드가 있지만 작동하지 않았 으면합니다.

from docx import Document 

document = Document("debtTemplate.docx") 
document.save("debt.docx") 
paragraphs = document.paragraphs 

debt = "1.20" 

paragraph = paragraphs[0] 
style = paragraph.style 
text = paragraph.text 
newText = text.format(debt=debt) 
paragraph.clear() 
paragraph.add_run(newText,style) 
document.save("debt.docx") 
+0

조금 늦게 ... Times New Roman과 12 크기를 모두 만들고 싶습니까? –

답변

-1

문서의이 페이지는 왜 스타일이 효과가 없는지 이해하는 데 도움이됩니다. 내가 몇 가지 다른 당신이 생각 발견 한 것에 대한 것을 좋아 http://python-docx.readthedocs.org/en/latest/user/styles.html

: 그것은 아주 쉽게 수정의 자리 교체를 수행 할 str.format() 메소드를 사용하여

  1. 을하는 좋은, 쉬운 방법 경량 텍스트 대체를 수행합니다. 간단한 사용자 정의 문서 생성에 대한 접근 방법으로 문서에 추가해야 할 것입니다.

  2. 단락의 XML에는 Word에서 단락에 추가 된 새 텍스트의 기본 서식을 나타내는 데 사용하는 <w:defRPr>이라는 선택적 요소가 있습니다. 예를 들어 끝 부분에 삽입 포인터를 놓고 입력을 시작한 경우와 같습니다. 단락 지금은 python-docx이 해당 요소를 무시합니다. 이것이 여러분이 시작한 Times New Roman 12 대신에 기본 Calibri 11을 얻는 이유입니다. 그러나 유용 할 수있는 기능은 해당 요소를 사용하여 단락 끝에 추가 된 새로운 실행에 실행 속성을 할당하는 것입니다. 이를 GitHub 추적기에 기능 요청으로 추가하려는 경우이를 구현하는 방법을 살펴 보겠습니다.

+0

안녕하세요 scanny, 답변 주셔서 감사합니다. 'document'를 정의한 직후에'document.save ("debt.docx")를 추가했습니다. debtTemplate (Times New Roman font 12) 스타일을 styles.xml에 저장하여 사용할 수 있기를 바랬습니다. 아아, 작동하지 않았다. 수정 된 코드는 다음과 같습니다. –

+0

실제로 코드는 주석에 표시되지 않으므로 원본 게시물을 편집합니다. –