社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

工作汇报神技!用Python三步生成带有图表的word报表

马哥Linux运维 • 8 年前 • 982 次点击  

最近在项目中做了一个生成并导出word报表的功能,在这里分享给大家。

经过查看ESPC原有的生成报表代码和网上查阅的一些方法,解决方案的思路如下:

1. 利用pychartdir库生成图表,保存图片,转成字节数据

2. 然后使用office办公软件编写所需要的模板word,另存为xml文件

3. 利用jinja2库渲染修改好的模板,然后写入.doc文件即可

那下面我将我实现的过程记录给大家分享一下。

利用pychartdir库生成图表,保存图片,转成字节数据


1.利用pychartdir库生成一个条形图

首先需要导入pychartdir库

我们以生成一个条形图为例子:

结果为一张图片:

2.我们在word中如果只是引用路径,那么生成的word就会出现找不到图片,此时,我们应该使用下面这个函数将图片转化为字节数据:

此时我们就拿到了我们想要的数据

我们可以将所需要画图的封装成一个工具类,只留取数据接口比如:

然后使用office办公软件编写所需要的模板word,另存为xml文件


1.使用office软件编写一个所需要的word模板,编写好之后选择另存,类型选择为xml文件。

2,使用sublime或者其他文本编辑打开xml文件,在模板相应位置替换成渲染的数据模型,具体语法和Django模板的语法基本一致,如:

利用jinja2库渲染修改好的模板,然后写入.doc文件即可


1.导入jinja2模块和相应模块

2.加载我们刚刚编辑好的word模板

3.打开和渲染模板

其中w_id和w_pname属性是word图片的属性,只要每一张图片id name唯一即可

全部代码如下:

运行代码,即可生成我们想要的word报表

参考资料及其链接:

Jinja2 安装:

pychartdir 安装:

Python 中要使用pychartdir的绘图的话需要安装pychartdir模块,其安装方法不同于其他python模块的安装。

1.先下载pychartdir,可从官网 http://www.advsofteng.com/download.html 下载对应的zip包

2.解压后的doc目录下有一个pychartdir.chm帮助文档

3.帮助文档中Installation中有描述安装的方法:

在python的安装目录下的Libsite-packages目录下新建chartdirector目录

将解压后的ChartDirectorlib目录下的所有文件复制到前面创建chartdirector目录下

在site-packages目录下新建一个chartdirector.pth文件,记事本打开,里面添加chartdirector,保存退出

4.打开python IDE,输入from pychartdir import *,如果导入成功则说明安装成功,可正常使用pychartdir

pychartdir API及其demo

http://www.advsofteng.com/doc/cdcfdoc/#cover.htm

Jinja2文档

http://docs.jinkan.org/docs/jinja2/

作者:袁庭飞

来源:http://blog.nsfocus.net/step-generate-word-reports-diagrams-py/


————广告时间————

《马哥Linux云计算及架构师》课程,由知名Linux布道师马哥创立,经历了8年的发展,联合阿里巴巴、唯品会、大众点评、腾讯、陆金所等大型互联网一线公司的马哥课程团队的工程师进行深度定制开发,课程采用 Centos7.2系统教学,加入了大量实战案例,授课案例均来自于一线的技术案例,培养过20%的学员月薪超过3万。

开课时间:11月06号

扫描二维码领取学习资料

感谢您抽出  · 来阅读此文

更多Python好文请点击【阅读原文】哦

↓↓↓


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/sQuGeWSvxI
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3580