Django使⽤python-docx-template,并根据模板来⽣成有数据的word⽂
1、⾸先,必须安装docxtpl,使⽤下⾯命令,其中会下载对应的相关依赖包:
pip install docxtpl
2、安装成功后,即可开始编码:
(1)、⾸先呢,要先⽣成⼀个模板⽂件,这个模板⽂件必须为docx的,如果是doc的话,要先转格式,不然会报以下错误:
ptions.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⽬录底下,代码如下:1.
from student.settings import MEDIA_ROOT
2.
from django.shortcuts import render
3.
from docxtpl import DocxTemplate
4.
5.
def post(self, request):
6.
base_url = MEDIA_ROOT + '/user/user_template/'
7.
asset_url = base_url + 'test模板.docx'
8.
tpl = DocxTemplate(asset_url)
9.
context = {'text': '哈哈哈,来啦'}
10.
11.
tpl.save(base_url + 'test.docx')
12.
return render(request, "user/user_info.html", content)
(3)、之后就会在模板相同的路径底下⽣成⼀个test.docx⽂档,打开即可看到我们代码底下的数据填充进模板了:
3、接下来,来试⼀下如何新建⼀个表格,把数据填充进去
(1)、⾸先修改⼀下那个test模板.docx,修改后如下:
{{ text }}
序号{%tc for col in user_labels %}{{ col }}{%tc endfor %}
{%tr for item in user_list %}django登录注册功能
{{ item.number }}{%tc for col ls %}{{ col}}{%tc endfor %}
{%tr endfor %}
word⽂档中是这样的表格:
(2)、修改代码如下:
1.
from student.settings import MEDIA_ROOT
2.
from django.shortcuts import render
3.
from docxtpl import DocxTemplate
4.
5.
def post(self, request):
6.
base_url = MEDIA_ROOT + '/user/user_template/'
7.
asset_url = base_url + 'test模板.docx'
8.
tpl = DocxTemplate(asset_url)
9.
context = {'text': '哈哈哈,来啦'}
10.
user_labels = ['姓名', '年龄', '性别', '⼊学⽇期']
11.
context['user_labels'] = user_labels
12.
user_dict1 = {'number': 1, 'cols': ['林⼩熊', '27', '男', '2019-03-28']} 13.
user_dict2 = {'number': 2, 'cols': ['林⼩花', '27', '⼥', '2019-03-28']} 14.
user_list = []
15.
user_list.append(user_dict1)
16.
user_list.append(user_dict2)
17.
context['user_list'] = user_list
18.
19.
tpl.save(base_url + 'test.docx')
20.
return render(request, "user/user_info.html", content)
(3)、之后便可以成功将数据填充进表格中,如下图所⽰:
4、其中模板可以添加进你所需要的内容,之后可以把数据库查询出来的字段,或者表单提交录⼊的字段填充进模板中,⼤家可以试⼀下,其中,注意路径如果出现错误,也会报之前类似的错误,⽐如我修改上⾯中的⼀⾏代码:
base_url = '/user/user_template/'
就会报错:ptions.PackageNotFoundError: Package not found at 'user/user_template/test模板.docx'
5、以上内容,仅供学习参考,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。