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 DocxTemplatedef 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文档,打开即可看到我们代码底下的数据填充进模板了:

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文档中是这样的表格:

(2)、修改代码如下:

from student.settings import MEDIA_ROOT
from django.shortcuts import render
from docxtpl import DocxTemplatedef 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_labelsuser_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_listtpl.render(context)tpl.save(base_url + 'test.docx')return render(request, "user/user_info.html", content)

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

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

base_url = '/user/user_template/'

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

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

Django使用python-docx-template,并根据模板来生成有数据的word文档相关推荐

  1. java 导出word 带格式_java 导出数据为word文档(保持模板格式)

    导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换  如  aaaaa ...

  2. Python 自动化:根据模板批量生成含指定数据的 word 文档

    作者:一只河马h 来源:简说Python 一.需求说明 在平时工作当中,经常需要处理文件,特别是Word,处理Word时会遇一类比较常见的场景:文档中大部分文字固定不变,小部分内容需要修改. 这时我们 ...

  3. Python自动化:根据模板批量生成含指定数据的word文档

    一.需求说明 在平时工作当中,经常需要处理文件,特别是Word,处理Word时会遇一类比较常见的场景:文档中大部分文字固定不变,小部分内容需要修改. 这时我们会机械的重复打开.修改.保存文档等一系列操 ...

  4. 案例:用python将中文翻译的和英文原文合成新的word文档

    案例:用python中文翻译的和英文原文合成新的word文档 一 问题的形成 需求的描述:一个英语翻译专业的研究生同学有一个期末作业.老师给了一个英文的文档,需要同学们翻译成中文.老师给的文档是格式如 ...

  5. Java 将xml模板动态填充数据转换为word文档

    需要用到的jar包: commons-codec-1.10.jar freemarker-2.3.21.jar jacob-1.6.jar 实现思路: 1.先将word文档另存为 : Word 200 ...

  6. Python如何免费获取付费文档的数据, 保存word文档

    目录标题 前言 开发环境: 模块使用: 代码实现步骤: 代码展示 尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 开发环境: python 3.8 pycharm 模块使用: requests - ...

  7. 计算机毕业设计django基于python的读书笔记共享平台(源码+系统+mysql数据库+Lw文档)

    项目介绍 本论文主要论述了如何使用PYTHON语言开发一个读书笔记共享平台 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述读书笔记 ...

  8. ftl文件模板图片_使用Freemarker导出Word文档(包含图片)代码实现及总结

    本篇是关于利用FreeMarker导出Word的实现步骤. 优点:采用FreeMarker是导出Word的最佳实现,非常的灵活,能够按照自己指定的样式设置并输出内容,操作简单方便,代码实现也容易.代码 ...

  9. JAVA 数据导出Word文档模板的功能实现

    对于这个功能,想必也有其他平台会需要吧.比如51job导出文档形式的简历这样.我在这里讲的是用java代码能满足我们实现这一功能的好用的一些方法.废话不多说了. 这种导出word,用XML的方式实现, ...

最新文章

  1. JBPM流程部署校验之java利用XSD校验XML
  2. 1.7 程序示例--多项式回归-机器学习笔记-斯坦福吴恩达教授
  3. 使用优化器提示(Optimizer Hints)
  4. node-inspector 在chrome里调试node代码
  5. python语言整数类型-Python 的内置数值类型
  6. matlab画泡面图,MATLAB中,( )函数可以保存图像并指定为图像文件格式。
  7. Java 9中的新Regex功能
  8. “XEIM”国内开源即时通讯XEIM
  9. mexcuda输入nvcc中的参数
  10. 阿里启动“Buy+”计划,正式成立 VR 实验室
  11. 双极性根升余弦信号qpsk_基于CCSDS协议的中频信号源设计与实现
  12. 【网络与系统安全实验】网络与系统安全概述
  13. JQuery对联广告
  14. android计步器简书,自定义View-仿QQ运动步数进度效果
  15. QQ伤感日志_你教会了我爱,让我懂得了爱
  16. 查看 Redis 某种类型的所有 key
  17. 键盘上各按键对应的英文名(转载)
  18. 多张JPG图片怎么转成一个PDF
  19. 【JavaWeb学习,快一起呀,干!】第二章 Servlet基础(3)—— 应用:数据处理
  20. 开放式问题:打造无可限量的系统

热门文章

  1. Java 中单引号和双引号的区别
  2. springcloud 入门 4 (rebbon源码解读)
  3. Ext动态加载Toolbar
  4. Firefox 浏览器被“http://hao.169x.cn/?m=sov=1023”劫持
  5. 问题2 String类equals 和 “==” 比较
  6. 不容按钮、下拉框 执行同一个函数或者同一种函数的用法
  7. WordPress 常用快捷键列表
  8. ASP.NET锚标记使用2种小方法
  9. IplImage, CvMat, Mat 的关系和相互转换(转)
  10. WIN10+VS2015环境下安装PCL1.8.1