最近在項目中做了一個(gè)生成并導出word報表的功能,在這里分享給大家。
經(jīng)過(guò)查看ESPC原有的生成報表代碼和網(wǎng)上查閱的一些方法,解決方案的思路如下:
1. 利用pychartdir庫生成圖表,保存圖片,轉成字節數據
2. 然后使用office辦公軟件編寫(xiě)所需要的模板word,另存為xml文件
3. 利用jinja2庫渲染修改好的模板,然后寫(xiě)入.doc文件即可
那下面我將我實(shí)現的過(guò)程記錄給大家分享一下。
一
利用pychartdir庫生成圖表,保存圖片,轉成字節數據
1.利用pychartdir庫生成一個(gè)條形圖
首先需要導入pychartdir庫
我們以生成一個(gè)條形圖為例子:

結果為一張圖片:

2.我們在word中如果只是引用路徑,那么生成的word就會(huì )出現找不到圖片,此時(shí),我們應該使用下面這個(gè)函數將圖片轉化為字節數據:

此時(shí)我們就拿到了我們想要的數據
我們可以將所需要畫(huà)圖的封裝成一個(gè)工具類(lèi),只留取數據接口比如:

二
然后使用office辦公軟件編寫(xiě)所需要的模板word,另存為xml文件
1.使用office軟件編寫(xiě)一個(gè)所需要的word模板,編寫(xiě)好之后選擇另存,類(lèi)型選擇為xml文件。

2,使用sublime或者其他文本編輯打開(kāi)xml文件,在模板相應位置替換成渲染的數據模型,具體語(yǔ)法和Django模板的語(yǔ)法基本一致,如:


三
利用jinja2庫渲染修改好的模板,然后寫(xiě)入.doc文件即可
1.導入jinja2模塊和相應模塊

2.加載我們剛剛編輯好的word模板
3.打開(kāi)和渲染模板

其中w_id和w_pname屬性是word圖片的屬性,只要每一張圖片id name唯一即可
全部代碼如下:

運行代碼,即可生成我們想要的word報表
參考資料及其鏈接:
Jinja2 安裝:
pychartdir 安裝:
Python 中要使用pychartdir的繪圖的話(huà)需要安裝pychartdir模塊,其安裝方法不同于其他python模塊的安裝。
1.先下載pychartdir,可從官網(wǎng) http://www.advsofteng.com/download.html 下載對應的zip包
2.解壓后的doc目錄下有一個(gè)pychartdir.chm幫助文檔
3.幫助文檔中Installation中有描述安裝的方法:
在python的安裝目錄下的Libsite-packages目錄下新建chartdirector目錄
將解壓后的ChartDirectorlib目錄下的所有文件復制到前面創(chuàng )建chartdirector目錄下
在site-packages目錄下新建一個(gè)chartdirector.pth文件,記事本打開(kāi),里面添加chartdirector,保存退出
4.打開(kāi)python IDE,輸入from pychartdir import *,如果導入成功則說(shuō)明安裝成功,可正常使用pychartdir
pychartdir API及其demo
http://www.advsofteng.com/doc/cdcfdoc/#cover.htm
Jinja2文檔
http://docs.jinkan.org/docs/jinja2/
作者:袁庭飛
來(lái)源:http://blog.nsfocus.net/step-generate-word-reports-diagrams-py/
聯(lián)系客服