关于pyhton-docx不能设置目录、页码的解决办法,使用win32com这个库

链接

概述

关于python-docx这个库,没有添加目录的内容,也没有添加页码的内容;通过查找,发现win32com这个库可以解决这些问题。

解决目录问题

我是通过win32com这个库写了一个更新插入目录页码的方法,先运行你使用python-docx模块所写的生成word文档的方法,将生成的word文档的路径写入下面代码,运行之后,就会生成有目录有页码的word文档了

# -*- coding: utf-8 -*-

import os
import win32com.client
from win32com.client import constants

#更新目录
def update_toc(docx_file):
    word = win32com.client.DispatchEx("Word.Application")
    word.Visible = 0  # 设置应用可见
    word.DisplayAlerts = 0

    doc = word.Documents.Open(docx_file)

    wd_section = doc.Sections(1)  # 注意section内部成员编号是从1开始的
    wd_section.Footers(constants.wdHeaderFooterPrimary).PageNumbers.Add(
        PageNumberAlignment=constants.wdAlignPageNumberCenter)  # 添加页码

    toc_count = doc.TablesOfContents.Count

    if toc_count == 0:
        #
        for i, p in enumerate(doc.Paragraphs):

            if '目录' in p.Range.Text:

                try:
                    p.Range.InsertParagraphAfter()
                    # p.Range.InsertAfter("---")
                    # print(doc.Paragraphs(i+2))

                    parag_range = doc.Paragraphs(i+2).Range

                    parag_range.Font.Name = '黑体'
                    parag_range.Font.Size = 14
                    parag_range.Font.Bold = constants.wdToggle
                    parag_range.Font.Bold = constants.wdToggle
                    parag_range.Font.Size = 12

                    doc.TablesOfContents.Add(Range=parag_range,
                                             UseHeadingStyles=True,
                                             LowerHeadingLevel=3)


                except Exception as e:
                    print("报错:", e, "报错")

                break

    elif toc_count == 1:
        toc = doc.TablesOfContents(1)
        toc.Update()
        print('TOC should have been updated.')
    else:
        print('TOC has not been updated for sure...')

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



if __name__=='__main__':

    docx_file = "D:\文档\word/报告.docx" #python-docx生成的word文档路径
    update_toc(docx_file)


  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python-docx 是一个用于创建和修改 Microsoft Word 文档的 Python 。它提供了一组简单而强大的 API,可以轻松地操作文本、样式、表格、图像等元素。 要设置文档中的样式,可以使用 `docx` 中的 `styles` 模块。首先,需要创建一个 `Document` 对象: ```python from docx import Document doc = Document() ``` 然后,可以使用 `styles` 模块中的方法创建或获取样式对象。例如,要创建一个新样式,可以使用 `styles` 的 `add_style()` 方法: ```python from docx.enum.style import WD_STYLE_TYPE new_style = doc.styles.add_style('New Style', WD_STYLE_TYPE.PARAGRAPH) ``` 这将创建一个名为 'New Style' 的新段落样式对象。可以使用不同的 `WD_STYLE_TYPE` 值来创建其他类型的样式,如表格样式、字符样式等。 要修改样式的属性,可以通过访问样式对象的属性,并进行相应的更改。例如,要更改字体颜色和大小,可以使用 `font` 属性: ```python new_style.font.color.rgb = RGBColor(255, 0, 0) # 设置为红色 new_style.font.size = Pt(12) # 设置为12磅字体大小 ``` 这是一个简单的示例,演示了如何创建和修改样式。根据需要,可以进一步探索 `styles` 模块中的其他方法和属性,以满足更复杂的样式需求。 最后,可以将文档保存为 Word 文件: ```python doc.save('example.docx') ``` 这只是 Python-docx 中样式操作的一个简单示例。您可以根据自己的需求进一步研究和学习该使用方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值