关于python使用win32com生成word文档目录

1 篇文章 0 订阅
1 篇文章 0 订阅
最近在做一个数据分析项目,涉及到生成word文档。py在操作word这一块使用的是python-docx,但是我看了官方文档,发现这个模块并不能生成目录。在查了一些资料后发现win32com能够解决这个问题

使用win32com生成word目录需要搭配微软的.Net api使用,地址:(https://docs.microsoft.com/zh-cn/office/vba/api/word.document)
代码:
def update_toc(docx_file):  # word路径
    word = win32com.client.DispatchEx("Word.Application")
    word.Visible = 0  # 设置应用可见
    word.DisplayAlerts = 0
    doc = word.Documents.Open(docx_file)  # 使用微软office打开word
    toc_count = doc.TablesOfContents.Count  # 判断是否有无目录,如果数量是1则代表已经有目录了
    if toc_count == 0:
        for i, p in enumerate(doc.Paragraphs):  # 遍历word中的内容
            if '目录' in p.Range.Text:  # 用于指定目录页面,看下面提示
                p.Range.InsertParagraphAfter()  # 添加新的段落
                p.Range.InsertAfter("---")
                parag_range = doc.Paragraphs(i+2).Range
                doc.TablesOfContents.Add(Range=parag_range,
                                         UseHeadingStyles=True,
                                         LowerHeadingLevel=2)  # 生成目录对象

    elif toc_count == 1:
        toc = doc.TablesOfContents(1)
        toc.Update()

    doc.Close(SaveChanges=True)
    word.Quit()

提示:我用了一个死方法来用于指定目录生成页面,在使用docx模块生成文档的时候,在指定页面document.add_page_break() 打开一个空白页,并在这个页面加入目录两个字就好了

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值