如何使用Python win32com在MS Word中居中文本

时间:2017-05-16 19:43:48

标签: python ms-word format win32com

我自动创建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. 防止发生左对齐和/或
  2. 文本更改后再次居中文字?

2 个答案:

答案 0 :(得分:0)

总结评论部分的结果,win32com无法在标题中居中文本。至少在这种情况下,解决方案是在尝试修改文本之前确保文档中的格式在所有修改的行上是正确的。如果您的应用程序要求您修改文本,那么在更改标题文本之后更改格式(中心,左对齐等),win32com无法帮助...至少在今天。

答案 1 :(得分:0)

使用下面定义的标头对象的.Paragraphs.Alignment属性确实可以对齐标头。

import win32com.client

wrdApp = win32com.client.Dispatch('Word.Application')
doc = wrdApp.Documents.Open(fullFilePathAndName, False)
header = doc.Sections(1).Headers(win32com.client.constants.wdHeaderFooterPrimary).Range
header.Text = "some new header goes here"

#this will align the header content
header.Paragraphs.Alignment = win32com.client.constants.wdAlignParagraphCenter