pythondocx模板_Django使用python-docx-template,并根据模板来生成有数据的word文档

1、首先,必须安装docxtpl,使用下面命令,其中会下载对应的相关依赖包:

pip install docxtpl

2、安装成功后,即可开始编码:

(1)、首先呢,要先生成一个模板文件,这个模板文件必须为docx的,如果是doc的话,要先转格式,不然会报以下错误:

docx.opc.exceptions.PackageNotFoundError: Package not found at 'E:\student_project\student\media/user/user_template/test模板.doc'

(2)、新建一个空的docx文档,命名为test模板.docx,里面输入一行内容:{{ text }},放在student项目底下的media/user/user_template目录底下,代码如下:

from student.settings import MEDIA_ROOT

from django.shortcuts import render

from docxtpl import DocxTemplate

def post(self, request):

base_url = MEDIA_ROOT + '/user/user_template/'

asset_url = base_url + 'test模板.docx'

tpl = DocxTemplate(asset_url)

context = {'text': '哈哈哈,来啦'}

tpl.render(context)

tpl.save(base_url + 'test.docx')

return render(request, "user/user_info.html", content)

(3)、之后就会在模板相同的路径底下生成一个test.docx文档,打开即可看到我们代码底下的数据填充进模板了:

5439c63883cdca4fc3bb0d444e917290.png

3、接下来,来试一下如何新建一个表格,把数据填充进去

(1)、首先修改一下那个test模板.docx,修改后如下:

{{ text }}

序号

{%tc for col in user_labels %}

{{ col }}

{%tc endfor %}

{%tr for item in user_list %}

{{ item.number }}

{%tc for col in item.cols %}

{{ col}}

{%tc endfor %}

{%tr endfor %}

word文档中是这样的表格:

d09844811c6287190049c09d9ad066da.png

(2)、修改代码如下:

from student.settings import MEDIA_ROOT

from django.shortcuts import render

from docxtpl import DocxTemplate

def post(self, request):

base_url = MEDIA_ROOT + '/user/user_template/'

asset_url = base_url + 'test模板.docx'

tpl = DocxTemplate(asset_url)

context = {'text': '哈哈哈,来啦'}

user_labels = ['姓名', '年龄', '性别', '入学日期']

context['user_labels'] = user_labels

user_dict1 = {'number': 1, 'cols': ['林小熊', '27', '男', '2019-03-28']}

user_dict2 = {'number': 2, 'cols': ['林小花', '27', '女', '2019-03-28']}

user_list = []

user_list.append(user_dict1)

user_list.append(user_dict2)

context['user_list'] = user_list

tpl.render(context)

tpl.save(base_url + 'test.docx')

return render(request, "user/user_info.html", content)

(3)、之后便可以成功将数据填充进表格中,如下图所示:

f8279c6f0082ac6d9bcb186f997e5b17.png

4、其中模板可以添加进你所需要的内容,之后可以把数据库查询出来的字段,或者表单提交录入的字段填充进模板中,大家可以试一下,其中,注意路径如果出现错误,也会报之前类似的错误,比如我修改上面中的一行代码:

base_url = '/user/user_template/'

就会报错:docx.opc.exceptions.PackageNotFoundError: Package not found at 'user/user_template/test模板.docx'

5、以上内容,仅供学习参考,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值