专栏首页linux、Python学习工作汇报神技!用Python三步生成带有图表的word报表

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

最近在项目中做了一个生成并导出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/ http://www.magedu.com/?t=ldy_tengxunyun

原文链接:http://www.magedu.com/?t=ldy_tengxunyun

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何向老板解释反向代理?

    由于我家老板看过之后,对这篇文章的评价是:写的不错,语句是通顺的,排版是可以的,但反向代理是什么还是不清楚?所以我就想尝试着向非 IT 工作者解释“正向代理”和...

    马哥linux运维
  • 黑客们会用到哪些Python技术?

    Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测工具)。Python允许开发...

    马哥linux运维
  • 可能是最全面的 Python 字符串拼接总结

    在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅。

    马哥linux运维
  • 工作汇报神技!用Python三步生成带有图表的word报表

    最近在项目中做了一个生成并导出word报表的功能,在这里分享给大家。 经过查看ESPC原有的生成报表代码和网上查阅的一些方法,解决方案的思路如下: 1. 利用p...

    小小科
  • airflow 配置 CeleryExecutor

    celery 是分布式任务队列,与调度工具 airflow 强强联合,可实现复杂的分布式任务调度,这就是 CeleryExecutor,有了 CeleryExe...

    somenzz
  • python3中利用serial模块实现

    python上位机向单片机发送字符,单片机如果收到的字符为‘1’,则点亮灯1,如果收到的字符为‘2’,则点亮灯2;单片机若接受到字符,读取字符后,向pytho...

    py3study
  • django xlwt实现资产导出功能

    程序员同行者
  • 为了加速在GPU上进行深度学习训练,NVIDIA原来还做了这么多事情,你都知道么?

    不同行业采用人工智能的速度取决于最大化数据科学家的生产力。NVIDIA每个月都会发布优化的NGC容器,为深度学习框架和库提供更好的性能,帮助科学家最大限度地发挥...

    GPUS Lady
  • Python Ajax请求及返回 jso

    py3study
  • Mesos+Zookeeper+Marathon管理Docker(1)

    .服务器信息:物理机10.1.44.35上的KVM虚拟机 名称IP服务单点10.1.44.69Mesos\Marathon\Deimos\Zookeeper\D...

    程序员小王

扫码关注云+社区

领取腾讯云代金券