2017-05-16 15 views
0

MS Word 문서의 생성을 자동화하고 있으며 코드의 일부는 win32com을 사용하여 목차와 헤더를 업데이트합니다. 이를 수행하는 함수는 다음과 같습니다.MS Word에서 파이썬으로 텍스트를 가운데에 맞추는 방법

import win32com.client as win32 

def updateHeaderAndTOC(docx_file, headerText): 
    word = win32.gencache.EnsureDispatch("Word.Application") 
    doc = word.Documents.Open(docx_file) 
    word.ActiveDocument.Sections(1)\ 
     .Headers(win32.constants.wdHeaderFooterPrimary)\ 
     .Range.Text=headerText 
    doc.TablesOfContents(1).Update() 
    doc.Close(SaveChanges=True) 

이것은 잘 작동하는 것 같습니다. 문제는 헤더 텍스트가 바뀌면 어떤 이유에서든 헤더 텍스트를 변경하기 전에 가운데에 정렬하는 대신 헤더가 왼쪽으로 정렬된다는 것입니다.

누군가 및/또는

  • 센터 텍스트 후 다시 텍스트가 어떻게 변경되었는지

    1. 방지 일어나고에서이 왼쪽 정당성을 알고 있나요?
  • +0

    센터 맞춤, 단일 단락 헤더가있는 테스트 파일을 만들었습니다. 귀하의 코드는 내 머리글을 왼쪽 맞춤으로 만들지 않았습니다. 당신의 타겟 단어 파일에서 center-tab으로 centering을했을지도 모릅니다. 이 경우 헤더 텍스트의 시작 부분에'\ t '를 추가 할 수 있습니다. – xidgel

    +0

    교체 할 헤더에는 2 줄 (2 단락)이 있으며, 교체되는 헤더에는 2 줄/단락이 있습니다. 차이가 있니? – Jed

    +0

    'headerText ='foo \ rbar \ r '과 같이 2-para 헤더를 바꾸는 문제를 재현 할 수 없습니다. 2 개의 가운데에있는 머리말 단락 뒤에 3 번째 빈 왼쪽 맞춤 단락이있는 경우 문제를 재현 할 수 있습니다. – xidgel

    답변

    0

    의견 섹션의 결과를 요약하면 win32com에서 헤더의 가운데에 텍스트를 표시 할 방법이 없습니다. 적어도이 경우 해결 방법은 텍스트를 수정하기 전에 ALL 수정 된 줄에서 문서의 서식이 올바른지 확인하는 것입니다. 응용 프로그램에서 텍스트를 수정해야하는 경우 해당 머리글 텍스트가 변경된 후 서식 지정 (중앙, 왼쪽 맞춤 등)을 변경하면 win32com은 오늘 적어도 도움이되지 않습니다.