2017-05-16 31 views
0

私はMS Word文書の作成を自動化しており、コードの一部はwin32comを使用して目次とヘッダーを更新しています。これを行う関数は次のようになります。PythonでMS Wordのテキストを中央に揃える方法win32com

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

    私は、中央揃えの1段落のヘッダーでテストファイルを作成しました。あなたのコードは、私のヘッダを左詰めにすることはありませんでした。あなたのターゲットとなる単語ファイルでは、センタータブでセンタリングが達成された可能性はありますか?その場合、ヘッダテキストの先頭に '\ t 'を付けることができます。 – xidgel

    +0

    私は置き換えているヘッダーには2行(2段落)あり、置き換えられるヘッダーには2行/段落があります。違いはありますか? – Jed

    +0

    2パラのヘッダーを 'headerText = 'foo \ rbar \ r'のように置き換えても、問題を再現できませんでした。 2つの中央揃えのヘッダー段落の後に3番目の空白の左詰め段落があったら問題を再現できます。 – xidgel

    答えて

    0

    コメントセクションの結果を要約すると、win32comがヘッダーの中央にテキストを表示する方法がありません。解決策は、少なくともこの場合、テキストの修正を試みる前に、ALL改訂された行で文書の書式設定が正しいことを確認することでした。アプリケーションでテキストを変更する必要がある場合、そのヘッダーテキストが変更された後に書式設定(中央揃え、左揃えなど)を変更すると、win32comは少なくとも今日はサポートできません。

    関連する問題