我使用Python中pywin32.client延伸,建设一个Word文档表。我尝试了很多方法来生成ToC,但都失败了。Word和Python的 - 创建目录
我想我想要做的就是调用的ActiveDocument对象,并创建一个与像从MSDN页面下面这个例子:
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
ActiveDocument.TablesOfContents.Add Range:=myRange, _
UseFields:=False, UseHeadingStyles:=True, _
LowerHeadingLevel:=3, _
UpperHeadingLevel:=1
除了在Python它会是这样的:
wordObject.ActiveDocument.TableOfContents.Add(Range=???,UseFiles=False, UseHeadingStyles=True, LowerHeadingLevel=3, UpperHeadingLevel=1)
我已经建立了到目前为止使用“选择”对象(如下图所示),并希望在第一页休息后添加此ToC的一切。
这里是什么样的文件看起来像一个示例:
objWord = win32com.client.Dispatch("Word.Application")
objDoc = objWord.Documents.Open('pathtotemplate.docx') #
objSel = objWord.Selection
#These seem to work but I don't know why...
objWord.ActiveDocument.Sections(1).Footers(1).PageNumbers.Add(1,True)
objWord.ActiveDocument.Sections(1).Footers(1).PageNumbers.NumberStyle = 57
objSel.Style = objWord.ActiveDocument.Styles("Heading 1")
objSel.TypeText("TITLE PAGE AND STUFF")
objSel.InsertParagraph()
objSel.TypeText("Some data or another"
objSel.TypeParagraph()
objWord.Selection.InsertBreak()
####INSERT TOC HERE####
任何帮助将不胜感激!在一个完美的世界,我会用它可从话语GUI,但似乎指向一个文件,是很难获得(一些有关模板)的默认第一个选项。
感谢
由于TOC自动从YHE头结构构建,为什么不直接插入目录中的模板,该模板创建一个文档? – barny
@barny我怎样才能让它坚持到第二页?当我使用'WordObject.Selection.action()'结构时,文档就像我写的那样。如果我在模板中放置一个ToC,它会被推到右下角?有没有一种方法可以指定第一页顶部的选择开始,然后跳转到ToC之后? – Abraxas
将书签/标记放入模板中,位于第3页(或任何地方)。然后在你的代码中搜索标记,这就是你添加内容的地方。然后,您可以在模板,页眉/页脚,样式,图形等任何其他格式,绝对没有代码。这样,当有人说“我希望Normal字体更大”时,您只需编辑模板,无需更改一行代码。您正在使用大多数格式的样式,而不是直接特定(手写)格式,除非特殊情况,对吗?然后你的客户非常高兴。 – barny