Odoo中利用python的Docxtpl模块生成word附件

本文介绍了在Odoo中利用Docxtpl模块和Jinja2语法生成Word附件的详细过程。首先,讲解了Docxtpl模块的功能,它是如何通过加载docx模板并结合Python进行文档生成。接着,简要说明了Jinja2模板引擎的语法,并提供了官方文档链接以供深入学习。最后,通过一个具体的开发实例,展示了如何在Odoo系统中批量生成docx文档,将其转换为ir.attachment并存储在模型中。
摘要由CSDN通过智能技术生成

Odoo中如何利用Docxtpl模块生成word附件

1、Docxtpl模块介绍

docxtpl 一个很强大的包,其主要通过对docx文档模板加载,从而对其进行修改。对URL字符串进行格式化处理。
这个想法是开始于创建一个需要用MicrosoftWord生成的文档的示例,它可以像我们想要的那样复杂:如图片、索引表、页脚、页眉、变量,以及我们可以用Word做的任何事情。然后,当我们使用MicrosoftWord编辑文档时,直接在文档中插入类似于Jinja 2的标记。将文档保存为.docx文件(XML格式),它将是.docx模板文件。
现在,我们可以使用python-docx-template从这个.docx模板和将关联的上下文变量生成您想要的多个Word文档。
注意:python-docx-template是测试的是MS Word 97格式,它可能不适用于其他版本。

2、Jinja 2类语法

因为模板标签主要来自jinja2,可以了解其语法,在此只为展示如何通过word模板批量生成docx文件,并且转换为附件存储到odoo系统,jinja2语法可参考官方文档学习:
http://docs.jinkan.org/docs/jinja2/templates.html

3、开发实例演示

本示例主要演示在odoo系统中,利用Docxtpl模块批量生成docx文档,并且成功保存为(ir.attachment)附件,存储在odoo模型中。

模块安装及导入

pip install docxtpl
import uuid
from docxtpl import DocxTemplate, RichText, InlineImage
from docx.shared import Mm, Inches, Pt

准备docx模板
这里只做简单的语法展示,更多语法可自行学习jinja2,类似html。
(这里模拟的是养老院老人的合同签署文件模板,合同中需要填写老人信息以及多个家属签章,通过docxtpl,可以将老人的数据批量传入接口,输出多个老人的docx合同,并且保存到odoo系统的ir_attachment)

python代码展示

    def create_document(self, rec_id):
        rec_id = self.browse(rec_id)
        #模板名称
        template_name = '多子女家属委托书.docx'
        # doc = DocxTemplate(template_path + template_name)
        type = 'old_home'
        code = '005'
        template_obj = self.env['pen.base.company.template']
        # 该方法为获取附件存储路径
        template_file_dir = template_obj.get_attachment_id(self.env.user.company_id, type, code)
        # 创建docx实例
        doc &#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值