使用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) )
如果用户没有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()
... ///
这工作完美!尽管你可能会清理一些代码 – wnnmaw 2014-02-21 23:55:46
那么,如果我的理解,你需要创建在许多docx文件标题部分。 据我担心人们正在使用python-docx来实现这一点。 虽然此新功能不可用,但您可以直接将其添加到您的docx文件。
如果您还不知道,可以解压缩docx文件。在它的结构里面有一些header.xml文件。
一个建议是,使用头创建一个docx文件,然后使用lxml和zipfile模块,您可以简单地更新所有docx文件中的header.xml文件。
如果这件事可以用来帮助你解决问题,让我知道,我可能会指导你通过。
Regards
保留一个合适的词标题格式。
- 创建页眉/页脚模板的docx文件
- 插入占位符(即#headerText)通过Word中插入的docx(组文)
- 扩大模板的XML树
- 更换你想要的文字
- 输出新的Word文档
这不是编辑DOCX一个理想的解决方案占位符,但它主要是解决了我的python docx文本插入需要。
最终,python docx可能会添加更多功能来帮助编辑页眉/页脚。
谢谢你的回应。使用namespaces = wordnamespaces给了我一个错误,所以我使用nsprefixes来代替。但我并不只是一个文本标题,我的意思是一个实际的MS Word文档标题,它将传递到文档中的每个页面。那可能吗? @RobVolgman – Ishu108 2012-07-25 18:55:40
这将添加一个_heading_(如用粗体文本标记一个部分的开始),OP想要一个_header_(如在每个页面顶部显示的文本中)。 '''docx'''不支持头文件 – wnnmaw 2014-02-21 23:48:33