Python批量word報(bào)告(帶圖)【思路篇】

1. 背景

清明節(jié)的時(shí)候复凳,正做好了心理建設(shè)要開(kāi)始寫一個(gè)項(xiàng)目結(jié)題報(bào)告菌羽,

同事突然發(fā)來(lái)了一句:“哈嘍升略,你能代碼批量出有圖的報(bào)告嗎兵迅?”

心情既是激動(dòng)(最近沉迷python不可自拔)泰讽,又是恐懼(那個(gè)結(jié)題報(bào)告感覺(jué)寫不完了……)例衍,五味雜陳啊……

跟同事溝通了一下需求昔期,感覺(jué)用python寫代碼兩三天應(yīng)該能出來(lái)吧,狠了狠心佛玄,答應(yīng)下來(lái)硼一,也算逼著自己面對(duì)這個(gè)坎吧。

其實(shí)梦抢,批量出報(bào)告般贼,很久前就用R研究過(guò),只是死活都卡在出不了office自帶的chart對(duì)象的圖奥吩,就總是經(jīng)歷從入門到放棄的過(guò)程……

好在同事的需求沒(méi)有那么麻煩哼蛆,不少數(shù)據(jù)同事也已經(jīng)整理好了,于是霞赫,花了2天時(shí)間(確切的來(lái)說(shuō)腮介,是29個(gè)小時(shí))邊百度邊搞出來(lái)了……

趁著程序在跑,把思路整理整理端衰,記一記……

2. 需求

同事的需求就是希望能夠出145份區(qū)紀(jì)委的分報(bào)告叠洗,里面的圖可以是圖片,里面需要替換的部分已經(jīng)標(biāo)記出來(lái)了旅东,有的同事也已經(jīng)整理好在excel中灭抑,有的還需要在python里算。

3.思路過(guò)程

1. 確定關(guān)鍵技術(shù)問(wèn)題

明確需求后抵代,首先確定有哪些關(guān)鍵技術(shù)問(wèn)題需要解決:

① python根據(jù)模板生成word腾节;

② python生成柱狀圖和折線+柱狀組合圖;

③ python將圖插入word的指定位置荤牍;

④ python根據(jù)結(jié)果呈現(xiàn)不同表述內(nèi)容案腺;

2. 解決關(guān)鍵技術(shù)問(wèn)題

python根據(jù)模板生成word :根據(jù)第三方庫(kù)docx-mailmerge,配合在word模板里插入MailMerge域可以實(shí)現(xiàn)参淫;

image.png

python生成柱狀圖和折線+柱狀組合圖:根據(jù)第三方庫(kù)matplotlib可實(shí)現(xiàn)救湖,如下圖效果【數(shù)據(jù)已經(jīng)虛擬!】

(其實(shí)涎才,最怕畫圖就是因?yàn)榧追浇?jīng)常會(huì)說(shuō)一句“弄得好看一點(diǎn)”鞋既,然而,我是一直覺(jué)得我是沒(méi)有審美的耍铜,就怕這種來(lái)回調(diào)了……)

pic1.png
pic2.png

python將圖插入word的指定位置

百度了一圈邑闺,發(fā)現(xiàn)可以指定在某個(gè)段落插入圖片,但是棕兼,嘗試幾次陡舅,發(fā)現(xiàn)圖片都是嵌入性,顯示不全伴挚,而且也不能居中對(duì)齊靶衍。

琢磨了一下灾炭,發(fā)現(xiàn)可以指定位置插入表格,這樣的話颅眶,可以先插入1行3列無(wú)邊框的表格蜈出,再將圖片插入到中間列里,這樣既能解決顯示不全涛酗,又能保證居中對(duì)齊了铡原。

報(bào)告pic.png

python根據(jù)結(jié)果呈現(xiàn)不同表述內(nèi)容

需求里,需要先根據(jù)選取不同組別中均值最高的組商叹,再對(duì)該組的18個(gè)題目的均值進(jìn)行排序燕刻,選出均值最高或最低的題項(xiàng)進(jìn)行描述。共有5個(gè)組別剖笙。

例如卵洗,51歲及以上的群體XX均值最高,得分為XX分枯途,其中忌怎,該群體在題項(xiàng)1的評(píng)價(jià)最高,在題項(xiàng)2的評(píng)價(jià)最低酪夷。

這個(gè)就需要寫循環(huán)和判斷了,還得根據(jù)得分修改描述孽惰,如果有多個(gè)題項(xiàng)晚岭,還得寫成評(píng)價(jià)最高是題項(xiàng)1,題項(xiàng)2等n個(gè)方面勋功。

光寫這段循環(huán)和判斷坦报,邊捋邏輯邊寫,就花了3個(gè)小時(shí)左右狂鞋,縮進(jìn)就縮進(jìn)了5層片择,好在一遍寫完之后,沒(méi)啥大錯(cuò)骚揍,重點(diǎn)是沒(méi)有發(fā)現(xiàn)不明白的錯(cuò)字管,最后調(diào)試成功,跑完也就花了1分多鐘信不。


代碼.png

3.其他問(wèn)題(keng)

只要一個(gè)例子弄出來(lái)了嘲叔,剩下的就是寫循環(huán)跑出來(lái)了。

在此期間也是在坑里掉進(jìn)去爬上來(lái)不少次的抽活。

例如:

① 保證柱狀圖柱子的寬度不隨著組別數(shù)量發(fā)生變化:通過(guò)建字典硫戈,指定不同組別數(shù)量的圖的寬度不一樣;

② 柱狀圖一共跑了800多個(gè)圖下硕,之前總是跑到一半就errorFail to allocate bitmap丁逝,后來(lái)應(yīng)該是刪了fig.add_subplot(111)汁胆,才可以都跑出來(lái);

核查反饋回來(lái)之后霜幼,需要:

③ 柱狀圖的x標(biāo)簽需要按照選項(xiàng)順序呈現(xiàn):琢磨了一下嫩码,之前是先將數(shù)值replace成標(biāo)簽;現(xiàn)在是先用數(shù)值作為x軸標(biāo)簽辛掠,再對(duì)x軸標(biāo)簽進(jìn)行替換就行了谢谦;

④ 標(biāo)點(diǎn)符號(hào)全角半角的問(wèn)題:這個(gè)真的是,看得我的眼睛都要瞎了……模板里有全角半角的萝衩,圖片選項(xiàng)里有全角半角的回挽,看了半天……花的時(shí)間最長(zhǎng)的是,替換的數(shù)據(jù)部分猩谊,在excel是全角千劈,到word是半角,各種排除因素牌捷,發(fā)現(xiàn)墙牌,原來(lái)要在word模板里對(duì)這個(gè)域<<>>進(jìn)行格式設(shè)定,最后就能保證出來(lái)的符號(hào)是全角的暗甥。

4.最后

好在最后多多少少能滿足需求了喜滨,實(shí)在是個(gè)性化的就得手動(dòng)改了,例如撤防,有的分組沒(méi)有數(shù)據(jù)虽风,整個(gè)段落就得刪了。好在python也可以打印出哪些報(bào)告存在這些特殊的情況寄月,便于后續(xù)查驗(yàn)了辜膝。

好了,不多說(shuō)了漾肮,還得去寫那個(gè)項(xiàng)目結(jié)題報(bào)告了……一個(gè)寫到懷疑人生的結(jié)題報(bào)告……

最后厂抖,實(shí)名感謝后勤部長(zhǎng)兼政委的鄭老師!給寫結(jié)題報(bào)告寫到懷疑人生的我做好吃的克懊,還做思想工作忱辅!

補(bǔ)充:
python里“四舍五入”的坑

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者保檐。
  • 序言:七十年代末耕蝉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子夜只,更是在濱河造成了極大的恐慌垒在,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異场躯,居然都是意外死亡谈为,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門踢关,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伞鲫,“玉大人,你說(shuō)我怎么就攤上這事签舞★跖В” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵儒搭,是天一觀的道長(zhǎng)吠架。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搂鲫,這世上最難降的妖魔是什么傍药? 我笑而不...
    開(kāi)封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮魂仍,結(jié)果婚禮上拐辽,老公的妹妹穿的比我還像新娘。我一直安慰自己擦酌,他們只是感情好俱诸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著赊舶,像睡著了一般乙埃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锯岖,一...
    開(kāi)封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音甫何,去河邊找鬼出吹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辙喂,可吹牛的內(nèi)容都是我干的捶牢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巍耗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秋麸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起炬太,我...
    開(kāi)封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灸蟆,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后亲族,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炒考,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡可缚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斋枢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帘靡。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓤帚,靈堂內(nèi)的尸體忽然破棺而出描姚,到底是詐尸還是另有隱情,我是刑警寧澤戈次,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布轩勘,位于F島的核電站,受9級(jí)特大地震影響朝扼,放射性物質(zhì)發(fā)生泄漏赃阀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一擎颖、第九天 我趴在偏房一處隱蔽的房頂上張望榛斯。 院中可真熱鬧,春花似錦搂捧、人聲如沸驮俗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)王凑。三九已至,卻和暖如春聋丝,著一層夾襖步出監(jiān)牢的瞬間索烹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工弱睦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留百姓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓况木,卻偏偏與公主長(zhǎng)得像垒拢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子火惊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容