使用python添加头到docx文件

问题描述:

我有几百个文档需要添加特定的头文件(如在典型的MS Word头文件/页脚中)。这不是标题需要修改,这些文件不包含一个。有没有办法用Python-docx模块做到这一点?我最近发现它,它看起来很有希望。使用python添加头到docx文件

很简单。

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

如果用户没有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

那么,如果我的理解,你需要创建在许多docx文件标题部分。 据我担心人们正在使用python-docx来实现这一点。 虽然此新功能不可用,但您可以直接将其添加到您的docx文件。

如果您还不知道,可以解压缩docx文件。在它的结构里面有一些header.xml文件。

一个建议是,使用头创建一个docx文件,然后使用lxml和zipfile模块,您可以简单地更新所有docx文件中的header.xml文件。

如果这件事可以用来帮助你解决问题,让我知道,我可能会指导你通过。

Regards

保留一个合适的词标题格式。

  1. 创建页眉/页脚模板的docx文件
  2. 插入占位符(即#headerText)通过Word中插入的docx(组文)
  3. 扩大模板的XML树
  4. 更换你想要的文字
  5. 输出新的Word文档

这不是编辑DOCX一个理想的解决方案占位符,但它主要是解决了我的python docx文本插入需要。

最终,python docx可能会添加更多功能来帮助编辑页眉/页脚。