2012-07-25 103 views
3

我有幾百個文檔需要添加特定的頭文件(如在典型的MS Word頭文件/頁腳中)。這不是標題需要修改,這些文件不包含一個。有沒有辦法用Python-docx模塊做到這一點?我最近發現它,它看起來很有希望。使用python添加頭到docx文件

回答

0

很簡單。

from docx import * 
document = yourdocument.docx 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0] 
docbody.append(heading('Your header text',1) ) 
+0

謝謝你的迴應。使用namespaces = wordnamespaces給了我一個錯誤,所以我使用nsprefixes來代替。但我並不只是一個文本標題,我的意思是一個實際的MS Word文檔標題,它將傳遞到文檔中的每個頁面。那可能嗎? @RobVolgman – Ishu108 2012-07-25 18:55:40

+1

這將添加一個_heading_(如用粗體文本標記一個部分的開始),OP想要一個_header_(如在每個頁面頂部顯示的文本中)。 '''docx'''不支持頭文件 – wnnmaw 2014-02-21 23:48:33

1

如果用戶沒有docx包,也可以通過win32來完成,使用這個。

..//

import win32com.client 

if win32com.client.gencache.is_readonly == True: 
    win32com.client.gencache.is_readonly = False 
    win32com.client.gencache.Rebuild() 

from win32com.client.gencache import EnsureDispatch 
from win32com.client import constants 

word = win32com.client.gencache.EnsureDispatch("Word.Application") 
word.Visible = False 

    #tell word to open the document 
    word.Documents.Open (IP_Directory_Dest + "\\" + name) 

    #open it internally 
    doc = word.Documents(1) 

    # for changing the header information of the Document 
    word.Visible = True 
    word.ActiveDocument.Sections(1).Headers(win32com.client.constants.wdHeaderFooterPrimary).Range.Text='STUFF U WANT AS UR DOCUMENT HEADER' 
    word.ActiveDocument.Save() 

... ///

+0

這工作完美!儘管你可能會清理一些代碼 – wnnmaw 2014-02-21 23:55:46

0

那麼,如果我的理解,你需要創建在許多docx文件標題部分。 據我擔心人們正在使用python-docx來實現這一點。 雖然此新功能不可用,但您可以直接將其添加到您的docx文件。

如果您還不知道,可以解壓縮docx文件。在它的結構裏面有一些header.xml文件。

一個建議是,使用頭創建一個docx文件,然後使用lxml和zipfile模塊,您可以簡單地更新所有docx文件中的header.xml文件。

如果這件事可以用來幫助你解決問題,讓我知道,我可能會指導你通過。

Regards

0

保留一個合適的詞標題格式。

  1. 創建頁眉/頁腳模板的docx文件
  2. 插入佔位符(即#headerText)通過Word中插入的docx(組文)
  3. 擴大模板的XML樹
  4. 更換你想要的文字
  5. 輸出新的Word文檔

這不是編輯DOCX一個理想的解決方案佔位符,但它主要是解決了我的python docx文本插入需要。

最終,python docx可能會添加更多功能來幫助編輯頁眉/頁腳。