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

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

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

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

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

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

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

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


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

首先需要导入pychartdir库

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

结果为一张图片:

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

d3hfZm10PXBuZw==

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

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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


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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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


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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

3.打开和渲染模板

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

全部代码如下:

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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

参考资料及其链接:

Jinja2 安装:

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

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/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用DEM(数字高程模型)数据生成带有纹理的三维模型。DEM数据是一种描述地形和地理表面形状的数字化模型。下面是一个简单的步骤来使用Python生成带有纹理的三维模型: 1. 获取DEM数据:首先,需要获取DEM数据,这可以通过网上下载或者提前准备好的数据集来实现。DEM数据一般是以栅格形式呈现的,每个像素点表示特定位置的高程信息。 2. 解析DEM数据:使用Python中的相应库(如GDAL)读取DEM数据集,并将其转换为高程数组。根据像素的高程值,可以确定每个点的三维坐标。 3. 创建三维网格:根据高程数组中提取的三维坐标,可以创建一个三维网格,以形成地形表面。这可以使用Python中的三维可视化库(如Matplotlib或Mayavi)来实现。 4. 添加纹理:为了添加纹理,可以使用地理图像或贴图。首先,需要获取相应的地理图像或贴图文件(如JPEG或PNG格式)。然后,使用Python中的相应库(如PIL、OpenCV)读取图像数据,并将其应用于三维网格上的相应位置。 5. 渲染和显示:最后,将生成带有纹理的三维模型进行渲染,并在显示设备上进行显示。在Python中,可以使用相应的库(如Matplotlib或Mayavi)来进行渲染和显示。 以上是一个基本的步骤,用于使用Python生成带有纹理的三维模型。根据具体需求和数据集的不同,可能需要进行一些调整和额外的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值