最近在專案中做了一個生成並匯出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/