免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
實(shí)例5:用Python批量生成word版邀請(qǐng)函

每到年終時(shí),公司都要舉辦年會(huì),總結(jié)當(dāng)年的得失。還有就是組織個(gè)晚會(huì),表演些節(jié)目,抽獎(jiǎng)......當(dāng)然,還有,賞大餐一頓。人事部的妹子這時(shí)就發(fā)愁了,忙碌地進(jìn)行各種準(zhǔn)備不說(shuō),還要給供應(yīng)商,政府部門(mén)發(fā)邀請(qǐng)函。這個(gè)邀請(qǐng)函其實(shí)除了受邀者的名字不同外,其它信息完全一樣,純粹的體力活。這種臟累活兒,就交給Python來(lái)干吧。


首先,我們需要將所有受邀者的公司名和代表姓名填入一個(gè)Excel表格。然后做好邀請(qǐng)函的模板,在需要填字的地方打上小星星“****”,然后就讓Python來(lái)玩填字游戲啦。話不多說(shuō),直入主題,代碼走一波......

#1.從Excel文件獲取受邀人單位和名字
from openpyxl import load_workbook
wb=load_workbook('data/name_list.xlsx')
ws=wb['name']
names=[]
for row in range(2,ws.max_row+1):
company=ws['A'+str(row)].value
name=ws['B'+str(row)].value
names.append(' {} {} '.format(company,name))
names
>>[' 供應(yīng)商1 王波 ',
' 供應(yīng)商2 劉海洋 ',
' 供應(yīng)商3 少和光 ',
' 供應(yīng)商4 真凡巧 ',
' 供應(yīng)商5 魯鴻運(yùn) ',
' 政府1 樂(lè)清霽 ',
' 政府2 郎綺琴 ',
' 政府3 貝芳懿 ',
' 政府4 哈彥君 ']

我們首先導(dǎo)入openpyxl模塊中的load_workbook模塊。openpyxl是一個(gè)可讀取Excel的第三方庫(kù)。load_workbook()可打開(kāi)一個(gè)現(xiàn)有的Excel文件(或叫工作簿)。我們使用load_workbook(path)讀取文件,并存在變量wb里面。我們可以想象變量就是容器,用來(lái)儲(chǔ)存各種數(shù)據(jù),這里的wb就是這個(gè)容器的名字。wb存儲(chǔ)的是整個(gè)工作簿的內(nèi)容,我們知道一個(gè)Excel有幾個(gè)工作表“Sheet”,接下來(lái)我們需要選取我們所需要的“Sheet”,也就是名字叫'name'的那張表。當(dāng)然你可以給這個(gè)工作表起自己喜歡的名字,在寫(xiě)代碼的時(shí)候把wb['name']中的'name'字樣替換成你的個(gè)性化名字即可。


然后定義一個(gè)空列表names來(lái)存儲(chǔ)受邀人單位和名字信息。隨后我們遍歷工作表,將所有信息提取出來(lái)存入列表names。因?yàn)楣ぷ鞅淼谝恍惺菢?biāo)題,所以我們從第2行開(kāi)始,最大一行+1結(jié)束range(2,ws.max_row+1)。之所以要加1,是因?yàn)閞ange(1,5)只能取到“1,2,3,4”四個(gè)值,5是取不到的。ws.max_row指工作表的總行數(shù)。然后我們開(kāi)始提取公司名稱,company=ws['A'+str(row)].value,當(dāng)row取2時(shí),就相當(dāng)于將工作表中A2(即A列2行單元格的值)單元格的值傳給了company變量。獲取姓名也是類似的操作方式。


然后將公司名稱和姓名排一下版,再加入names列表。' {} {} '.format(company,name)這個(gè)格式化字符串函數(shù)就完成了這個(gè)操作。我們?cè)诠久托彰g及前后都加入了一個(gè)空格,這樣在最終的邀請(qǐng)函上看起來(lái)就是這樣的:“尊敬的 供應(yīng)商1 王波 先生/女士:”。不留空格的話,就變成這樣了:“尊敬的供應(yīng)商1王波先生/女士:”,似乎有點(diǎn)不和諧。格式化字符串可以理解為,將format(company,name)括號(hào)中的值依次填入前面的{}。

# 2.批量填字,存為不同的word文件
import docx #導(dǎo)入處理word的庫(kù),無(wú)恥地直接使用別人造好的輪子
doc=docx.Document('data/邀請(qǐng)函.docx')
for name in names:
doc.paragraphs[1].runs[2].text=name
doc.save('data/邀請(qǐng)函_{}.docx'.format(name))

受邀人信息獲取完成后,我們就可以開(kāi)始批量生成邀請(qǐng)函了。首先導(dǎo)入處理word的庫(kù),無(wú)恥地直接使用別人造好的輪子。建立一個(gè)容器doc,來(lái)盛裝打開(kāi)的邀請(qǐng)函,docx.Document('data/邀請(qǐng)函.docx')為固定寫(xiě)法,括號(hào)內(nèi)填寫(xiě)邀請(qǐng)函模板的路徑及文件名。doc可理解為就是這個(gè)名為“邀請(qǐng)函”word文件。然后遍歷names列表,將里面的信息逐個(gè)寫(xiě)入word文件的第二段的第三個(gè)run,即doc.paragraphs[1].runs[2].text=name,相當(dāng)于直接用name的值“ 供應(yīng)商1 王波 ”替換掉****。其中的run指的是每一段中的不同的格式,比如一段中有常規(guī)的,有加粗的,有斜體的,有不同顏色的字,那么就有好幾個(gè)run。

那我們?cè)趺粗?code>****是第二段第三個(gè)run呢?通過(guò)我們制作的“邀請(qǐng)函”模板,我們知道****位于第二段(即doc.paragraphs[1],因?yàn)槭菑?開(kāi)始計(jì)數(shù),所以0表示第一段,1就表示第二段)。請(qǐng)注意word中若有空行,也算一段,比如模板中的'ABC有限公司'開(kāi)頭的那一段已經(jīng)算是第四段了。我么將第二段的所有run打印出來(lái),就可以找到****所在的run了。

doc=docx.Document('data/邀請(qǐng)函.docx')
for run in doc.paragraphs[1].runs:
print(run.text)

>>尊敬

****
先生
/
女士

我們可以看到其中有7個(gè)runs,雖然“尊敬的”三個(gè)字格式是一樣的,但是還是被識(shí)別為兩個(gè)單獨(dú)的run了,可能這個(gè)庫(kù)主要用來(lái)處理英文文檔,拿來(lái)搞中文有些水土不服。不管它了,讓它亂識(shí)別吧。通過(guò)以上的run打印,我們簡(jiǎn)單粗暴地?cái)?shù)下去,可以知道****在第三個(gè)run,即run[2]
然后逐個(gè)保存為單個(gè)的文件,并在給新的word文件命名時(shí)加上受邀人的信息doc.save('data/邀請(qǐng)函_{}.docx'.format(name))。得到的結(jié)果如下: 

了方便打印,可以使用word自帶的合并功能將所有邀請(qǐng)函合并為一個(gè)word文件。打開(kāi)第一個(gè)邀請(qǐng)函word文檔,然后單擊【插入】選項(xiàng)卡下的【對(duì)象】菜單中的【文件中的文字】選項(xiàng),選擇剩余的所有邀請(qǐng)函word文件,點(diǎn)插入,搞定!

所有源代碼和說(shuō)明都在Jupyter notebook上完成,所用到的Excel 資料已上傳GitHub, 歡迎Fork或下載到本地隨意玩。。。轉(zhuǎn)載請(qǐng)注明出處,謝謝。

GitHub鏈接:

https://github.com/weidylan/Office_Automation_by_Using_Python

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
入門(mén)干貨:Python操作Word文件經(jīng)驗(yàn)分享
大話 Python:python word 應(yīng)用 -- 辭職函
如何把docx轉(zhuǎn)換成doc
Python實(shí)現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼
教你用python操作Excel、Word、CSV,一文夠了
Python實(shí)現(xiàn)批量讀取word中表格信息的方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服