• docxtpl模块的word模板替换内容


    一、介绍

    这个包使用两个主要的包:

    用于读取、写入和创建子文档

    用于管理插入到模板docx中的标记

    python-docx模板已经创建,因为python-docx对于创建文档非常强大,但是对于修改文档却无能为力。

    这个想法是开始创建一个你想要用microsoft word生成的文档的例子,它可以像你想要的那样复杂:图片,索引表,页脚,页眉,变量,任何你可以用word做的事情。然后,由于您仍然在使用microsoft word编辑文档,所以可以直接在文档中插入类似jinja2的标记。您将文档保存为.docx文件(xml格式):它将是您的.docx模板文件。

    现在可以使用python-docx-template从.docx模板和关联的上下文变量中生成任意数量的word文档。

    更多高级用法请查看文档,以下是简单示例

    https://docxtpl.readthedocs.io/en/latest/#jinja2-like-syntax

    二、代码

    from docxtpl import DocxTemplate
    
    def temp_word(tmep_path,word_apth):
        tpl = DocxTemplate(tmep_path)
        # 需要替换内容以key:value的方式进行更换
        context = {
            "name":"上海市XXXXXX公司",
            "num":"num0000001",
            "custom":"上海市XXXXXX公司",
            "year":"2020",
            "month":"1",
            "day":"2"
        }
        tpl.render(context)
        tpl.save(word_apth)

    三、word模板

    模板展示

    第一步:

    此时是红色的

     第二步:

    选中{{name}}后鼠标右击,选着接收插入

     第三步:

    运行程序

    四、word转pdf

    word转pdf还有个前提是安装一个官方插件,不然会报错

    网盘:https://pan.baidu.com/s/1jGX48q5cZRmlDfsUN3Jh4g

    密码:lt3n

    from win32com.client import constants, gencache
    import win32ui
    
    dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框
    dlg.SetOFNInitialDir(r"C:UsersadminDesktop")  # 设置打开文件对话框中的初始显示目录
    dlg.DoModal()
    
    filename = dlg.GetPathName()  # 获取选择的文件名称
    
    def createPdf(wordPath, pdfPath):
        """
        word转pdf
        :param wordPath: word文件路径
        :param pdfPath:  生成pdf文件路径
        """
        word = gencache.EnsureDispatch('Word.Application')
        doc = word.Documents.Open(wordPath, ReadOnly=1)
        doc.ExportAsFixedFormat(pdfPath,
                                constants.wdExportFormatPDF,
                                Item=constants.wdExportDocumentWithMarkup,
                                CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
        word.Quit(constants.wdDoNotSaveChanges)
    
    if filename.split(".")[1] =="docx":
        p=filename.split(".")[0]+".pdf"
        createPdf(filename,p)
  • 相关阅读:
    使用Docker-compose部署MySQL测试环境
    使用MySQL SQL线程回放Binlog实现恢复
    MySQL 插件之 连接控制插件(Connection-Control)
    sysbench工具使用
    故障分析--主从复制故障1
    MySQL性能指标计算方式
    AJAX的 同步异步;EZView.js 图片预览和pdf预览
    Caused by: java.lang.ClassNotFoundException: org.springframework.context.App
    解决Myeclipse或Eclipse出现JPA project Change Event Handler问题的解决办法
    java中转换为string的方法;eques和==区别
  • 原文地址:https://www.cnblogs.com/angelyan/p/12298953.html
Copyright © 2020-2023  润新知