最近在項(xiàng)目中做了一個(gè)生成并導(dǎo)出word報(bào)表的功能,在這里分享給大家。
經(jīng)過查看ESPC原有的生成報(bào)表代碼和網(wǎng)上查閱的一些方法,解決方案的思路如下:
1.利用pychartdir庫生成圖表,保存圖片,轉(zhuǎn)成字節(jié)數(shù)據(jù)
2.然后使用office辦公軟件編寫所需要的模板word,另存為xml文件
3.利用jinja2庫渲染修改好的模板,然后寫入.doc文件即可
那下面我將我實(shí)現(xiàn)的過程記錄給大家分享一下。
一
利用pychartdir庫生成圖表,保存圖片,轉(zhuǎn)成字節(jié)數(shù)據(jù)
1.利用pychartdir庫生成一個(gè)條形圖
首先需要導(dǎo)入pychartdir庫
我們以生成一個(gè)條形圖為例子:
結(jié)果為一張圖片:
2.我們在word中如果只是引用路徑,那么生成的word就會出現(xiàn)找不到圖片,此時(shí),我們應(yīng)該使用下面這個(gè)函數(shù)將圖片轉(zhuǎn)化為字節(jié)數(shù)據(jù):
此時(shí)我們就拿到了我們想要的數(shù)據(jù)
我們可以將所需要畫圖的封裝成一個(gè)工具類,只留取數(shù)據(jù)接口比如:
二
然后使用office辦公軟件編寫所需要的模板word,另存為xml文件
1.使用office軟件編寫一個(gè)所需要的word模板,編寫好之后選擇另存,類型選擇為xml文件。
2,使用sublime或者其他文本編輯打開xml文件,在模板相應(yīng)位置替換成渲染的數(shù)據(jù)模型,具體語法和Django模板的語法基本一致,如:
三
利用jinja2庫渲染修改好的模板,然后寫入.doc文件即可
1.導(dǎo)入jinja2模塊和相應(yīng)模塊
2.加載我們剛剛編輯好的word模板
3.打開和渲染模板
其中w_id和w_pname屬性是word圖片的屬性,只要每一張圖片id name唯一即可
全部代碼如下:
運(yùn)行代碼,即可生成我們想要的word報(bào)表
參考資料及其鏈接:
Jinja2 安裝:
pychartdir 安裝:
Python中要使用pychartdir的繪圖的話需要安裝pychartdir模塊,其安裝方法不同于其他python模塊的安裝。
1.先下載pychartdir,可從官網(wǎng)http://www.advsofteng.com/download.html下載對應(yīng)的zip包
2.解壓后的doc目錄下有一個(gè)pychartdir.chm幫助文檔
3.幫助文檔中Installation中有描述安裝的方法:
在python的安裝目錄下的Libsite-packages目錄下新建chartdirector目錄
將解壓后的ChartDirectorlib目錄下的所有文件復(fù)制到前面創(chuàng)建chartdirector目錄下
在site-packages目錄下新建一個(gè)chartdirector.pth文件,記事本打開,里面添加chartdirector,保存退出
4.打開python IDE,輸入from pychartdir import *,如果導(dǎo)入成功則說明安裝成功,可正常使用pychartdir
pychartdir API及其demo
http://www.advsofteng.com/doc/cdcfdoc/#cover.htm
Jinja2文檔
http://docs.jinkan.org/docs/jinja2/
-
word
+關(guān)注
關(guān)注
1文章
78瀏覽量
22265 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4367瀏覽量
64147 -
數(shù)據(jù)模型
+關(guān)注
關(guān)注
0文章
52瀏覽量
10138
原文標(biāo)題:工作匯報(bào)神技!用Python三步生成帶有圖表的word報(bào)表
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論