使用python向docx文件添加标头

时间:2012-07-25 18:15:11

标签: python ms-word docx doc

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

4 个答案:

答案 0 :(得分: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()

... ///

答案 1 :(得分:0)

非常简单。

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

答案 2 :(得分:0)

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

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

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

如果您认为这可以帮助您解决问题,请告诉我,我可能会指导您。

此致

答案 3 :(得分:0)

保持正确的单词标题格式。

  1. 使用页眉/页脚
  2. 创建模板docx文件
  3. 通过Word将占位符(即#headerText)插入docx(将文本分组)
  4. 展开模板的xml树
  5. 用您想要的文字替换占位符
  6. 输出新的word文档
  7. 这不是编辑docx的理想解决方案,但它主要解决了我的python docx文本插入需求。

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