Flask后端实践 连载十四 Flask输出Word报表
Flask后端实践 连载十四 Flask输出Word报表
tips:
- 简单实现Flask输出Word报表
- 本文基于python3编写
- 代码仓库
项目场景
由于项目是工程上的使用,不仅需要对采集的数据进行分析,也需要输出报表,使用程序输出报表极大的简化了报表制作流程。
Python处理Word的包
python-docx
python-docx是一个用于创建和更新Microsoft Word(.docx)文件的Python库。文档地址
docxtpl
主要包含两个包,分别是python-docx用于读取,编写和创建子文档。jinja2用于管理插入模板docx的标签。通过预先设定的模板文件,生成需要的文件。文档地址
docxtpl的简单使用
项目上的Word报表定制化比较高。通常由用户提供模板,我们这边只需要在对应位置填写数据。因此项目上采用docxtpl
来定制化Word报表
安装
pip install docxtpl
简单使用,更多详细内容请看官方文档。
新建测试模板
test.docx
,设置模板样子,并填入相关参数。编写渲染测试代码
test.py
from docxtpl import DocxTemplate, InlineImage from docx.shared import Mm# 读取指定位置的模板文件 doc = DocxTemplate("test.docx") # 渲染的内容 context = {# 标题'title': "人员信息",# 表格'table': [{"name": "小李", "age": 11},{"name": "小张", "age": 21},{"name": "小张", "age": 20},{"name": "小张1", "age": 10},{"name": "小张2", "age": 30},{"name": "小张3", "age": 40},],# 页眉'header': 'xxx公司人员信息管理',# 页脚'footer': '1',# 图片'image': InlineImage(doc, 'test.jpg', height=Mm(10)), } # 渲染模板 doc.render(context) # 保存渲染的文件 doc.save("generated_doc.docx")
关于表格动态合并、表格设置可以参考这里
Flask结合docxtpl使用
测试代码
from docxtpl import DocxTemplate, InlineImage from docx.shared import Mm from flask import Flaskdef write():path = "generated_doc.docx"# 读取指定位置的模板文件doc = DocxTemplate("test.docx")# 渲染的内容context = {# 标题'title': "人员信息",# 表格'table': [{"name": "小李", "age": 11},{"name": "小张", "age": 21},{"name": "小张", "age": 20},{"name": "小张1", "age": 10},{"name": "小张2", "age": 30},{"name": "小张3", "age": 40},],# 页眉'header': 'xxx公司人员信息管理',# 页脚'footer': '1',# 图片'image': InlineImage(doc, 'test.jpg', height=Mm(10)),}# 渲染模板doc.render(context)# 保存渲染的文件doc.save(path)return pathapp = Flask(__name__)@app.route('/testWord', methods=["GET"]) def test_word():"""测试输出word:return:"""path = write()return pathif __name__ == '__main__':app.run()
启动app,访问
http://127.0.0.1:5000/testWord
返回生成路径generated_doc.docx
。然后配合nginx转发即可下载文件
总结
- 本篇文章简单介绍了docxtpl的使用,具体的使用场景应该与项目需求相结合。
- 下一篇将解决自关联无限层级生成目录树的问题
Flask后端实践 连载十四 Flask输出Word报表相关推荐
- Flask后端实践 连载十八 Flask输出PDF报表
Flask后端实践 连载十八 Flask输出PDF报表 tips: 简单实现Flask输出PDF报表 本文基于python3编写 代码仓库 项目场景 由于项目是工程上的使用,不仅需要对采集的数据进行分 ...
- Flask后端实践 连载十六 Flask实现微信Web端及APP端登录注册
Flask后端实践 连载十六 Flask实现微信Web端及APP端登录注册 tips: 本文将实现微信Web端和APP端登陆注册 本文基于python3编写 代码仓库 项目场景 某天,项目经理说,项目 ...
- Flask后端实践 连载十三 Flask输出Excel报表
Flask后端实践 连载十三 Flask输出Excel报表 tips: 简单实现Flask输出Excel报表 本文基于python3编写 代码仓库 项目场景 由于项目是工程上的使用,不仅需要对采集的数 ...
- Xamarin.Android开发实践(十四)
原文:Xamarin.Android开发实践(十四) Xamarin.Android之ListView和Adapter 一.前言 如今不管任何应用都能够看到列表的存在,而本章我们将学习如何使用Xama ...
- 单反相机的传奇—佳能单反50年辉煌之路(连载十四)
连载十四:M3--徕卡的震撼 引言:1954年4月在联邦德国科隆举办的国际摄影器材展上,徕卡M3发布,一举震撼了整个世界,让那些因为战争的缘故得以照抄徕卡的相机制造工厂目瞪口呆,M3作为德国相机的代表 ...
- 《linux核心应用命令速查》连载十四:fuser:用文件或者套接口表示进程
fuser:用文件或者套接口表示进程 作用:fuser命令用文件或者套接口表示进程. 用法:fuser [-a | -s | -c] [-4 | -6] [-n space] [-k [-i] [-s ...
- cc2530定时器和捕获比较_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...
1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...
- Flask后端开发(二) - Flask的练习(入门)
建议食用官方文档:Welcome to Flask - Flask Documentation (2.1.x)https://flask.palletsprojects.com/ 前言:避免文章篇幅过 ...
- stm32f767串口下载软件_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...
1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第十四章 输入捕获实验 ...
最新文章
- 9.path Sum III(路径和 III)
- mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库
- # 2017-2018-1 20155224 《信息安全系统设计基础》第九周学习总结
- STM32(Cortex-M3)开发,RVDS和MDK谁优谁劣?
- 操作系统(二十一)信号量机制
- 【资源】机器学习资料包来袭
- hibernate dynamic-update=true属性不起作用原因(转载)
- 汉字字符编码的科普笔记(GB2312汉字编码,Unicode与UTF-8,字符映射表,vim,文泉驿,正则表达式)
- Windows7自带截图工具无法保存图片的修复办法
- 理论+实验:Apache网页与安全优化(网页压缩、网页缓存、隐藏版本信息、网页图片防盗链)
- java图片合成_Java图片处理(一)图片合成
- 1GB等于2的多少次方
- 2021年计算机软考时间公布啦
- matlab仿真动画,MATLAB图形及三维动画仿真设计.ppt
- 软件工程之QA管理(好软件系列二)
- 【Android界面实现】Starting an Activity(Activity生命周期金字塔模型)
- 什么是人工智能技术?
- hangfire使用笔记
- 严格递增和非严格递增最长递增子序列长度
- 【ORACLE】详解oracle数据库UTL_RAW包各个函数的模拟算法
热门文章
- 初识Top4“不安全设计”以及Top5“安全配置错误”
- Deep Facial Expression Recognition: A Survey 笔记
- 微信小程序开发文档(4)
- 用java语言编写的程序计算机能直接执行_计算机的编程语言(上)
- 敏捷悖论之:站会的三种状态
- GSM/GPRS模组SIM800C
- less与sass的区别是什么?
- 基础(网络知识 二)——OSI七层与TCP/IP四/五层网络架构
- 帕金森病患者起居生活需要注意什么
- 联合国世界卫生组织(WHO)对健康的定义