我使用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