999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python實(shí)現(xiàn)反向郵件合并功能

2020-07-09 22:13:09馬孝宗戚亞?wèn)|徐燕
現(xiàn)代信息科技 2020年2期

馬孝宗 戚亞?wèn)| 徐燕

摘? 要:郵件合并是Office的一項(xiàng)功能,可便捷地批量生成文檔,卻無(wú)法從大量Word文檔中匯總信息。結(jié)合實(shí)際應(yīng)用,闡述基于Python語(yǔ)言對(duì)Word文檔進(jìn)行批量導(dǎo)入、讀取其中的表格與段落、匯總信息至Excel工作簿的實(shí)現(xiàn)過(guò)程。實(shí)現(xiàn)反向郵件合并功能,解決Word文檔批量匯總中的多個(gè)難點(diǎn),實(shí)現(xiàn)Word文檔批量匯總的自動(dòng)化,有效提高了用戶(hù)的工作效率,適用于人事數(shù)據(jù)、財(cái)務(wù)數(shù)據(jù)、員工信息的匯總,具有良好的實(shí)用性與推廣價(jià)值。

關(guān)鍵詞:Python;郵件合并;批量匯總

中圖分類(lèi)號(hào):TP391? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)02-0119-03

Abstract:Mail merge is a feature of Office that makes it easy to produce documents in bulk,but doesnt aggregate information from a large number of Word documents. Combined with practical application,this paper describes the implementation process of importing Word documents in batches based on Python language,reading the tables and paragraphs therein,and summarizing the information to the Excel workbook. Realize the function of reverse mail merge,solve many difficulties in the batch summary of Word documents,realize the automation of batch summary of Word documents,effectively improve the work efficiency of users,suitable for the summary of personnel data,financial data,employee information,with good practicability and promotion value.

Keywords:Python;mail merge;bulk summary

0? 引? 言

郵件合并是Office提供的一項(xiàng)既強(qiáng)大又實(shí)用的功能,其作用是將存放在Excel中的數(shù)據(jù)源按照一個(gè)記錄一頁(yè)的方式生成Word文檔,常用于批量制作郵件、請(qǐng)柬、簡(jiǎn)歷、成績(jī)單、證書(shū)、工作檔案等。郵件合并的使用步驟如下:首先準(zhǔn)備標(biāo)準(zhǔn)的Excel數(shù)據(jù)源和Word模板,接著在Word模板中啟動(dòng)郵件合并、選擇收件人、插入數(shù)據(jù)域、查看合并數(shù)據(jù)、完成合并。其主要工作在于Excel數(shù)據(jù)源和Word模板的制作,其余步驟通過(guò)在Word模板中選擇相應(yīng)功能即可完成,極大地提高了批量制作文檔的效率。

在實(shí)際工作中不但需要郵件合并功能,還需要反向郵件合并功能,即從同一模板下的Word文檔中提取信息并匯總為Excel表,比如匯總所有員工的工作檔案、匯總所有黨員的基本信息文檔、匯總所有員工的職業(yè)資格文檔等。但是Office并未提供反向郵件合并功能,無(wú)法便捷地從大量Word文檔中提取信息。Python語(yǔ)言提供了操作Office的庫(kù),基于Python編程實(shí)現(xiàn)反向郵件合并,可快速?gòu)腤ord文檔的表格、段落中提取信息,匯總并輸出為Excel工作簿。

1? 需求分析

反向郵件合并即批量讀取Word文檔,將文檔中的信息匯總為Excel工作簿。其功能還包括在計(jì)算機(jī)桌面檢查并生成“反向郵件合并”文件夾,由用戶(hù)將待合并的文檔存放到此文件夾內(nèi)。Word文檔中待合并的信息分別在表格和段落中。對(duì)于表格,需要將所有文檔相同位置的單元格內(nèi)容匯總為Excel表的一列;對(duì)于段落,需要將全部文檔相同位置的段落文本匯總為Excel表的一列,便于下一步根據(jù)需要保留、刪除信息。

以匯總員工工作檔案為例,在單個(gè)Word文檔中記錄了員工個(gè)人信息、學(xué)歷與培訓(xùn)、職業(yè)資格、獲獎(jiǎng)證書(shū)、榮譽(yù)稱(chēng)號(hào)、聯(lián)系方式等信息,為便于統(tǒng)計(jì),將全體員工的工作檔案匯總為Excel表,則Excel表的一列對(duì)應(yīng)著全部Word文檔相同位置的信息。比如Excel表的“姓名”列存放全部Word文檔中的姓名信息,“培訓(xùn)”列存放所有Word文檔中的培訓(xùn)信息等。之后通過(guò)保留Excel表部分列的方法即可選取所需的信息。實(shí)現(xiàn)反向郵件合并的步驟包括:路徑生成、Word文件識(shí)別、讀取文檔、遍歷表格與段落、信息匯總至數(shù)據(jù)幀、合并數(shù)據(jù)幀、結(jié)果輸出至Excel工作簿等。

2? 編程實(shí)現(xiàn)

2.1? 編程環(huán)境

編程環(huán)境采用Windows下的Anaconda軟件,Anaconda包含了Conda、Python在內(nèi)的大量科學(xué)包及其依賴(lài)項(xiàng),以及高效的Python開(kāi)發(fā)環(huán)境Spyder。具體開(kāi)發(fā)環(huán)境為:Windows 7/10操作系統(tǒng)、Anaconda3-5.3.0(64-bit)、Python-docx庫(kù)、Pandas庫(kù)。

2.2? 導(dǎo)入代碼所需的庫(kù)

實(shí)現(xiàn)反向郵件合并功能依賴(lài)于Python下的os、Python-docx、Pandas三個(gè)庫(kù),其中os是Python自帶的標(biāo)準(zhǔn)庫(kù),Python-docx與Pandas是第三方庫(kù),需事先安裝。

import os? ?#用于路徑生成與識(shí)別

import docx #用于操作Word

import pandas as pd #用于操作Excel

2.3? 獲取Word文檔中的表格與段落

首先獲取計(jì)算機(jī)桌面的路徑,在計(jì)算機(jī)桌面檢查并創(chuàng)建“反向郵件合并”文件夾。遍歷該文件夾內(nèi)所有文件,通過(guò)f.endswith('.docx')方法選取路徑名以“docx”結(jié)尾的文檔,通過(guò)docx.Document.tables、docx.Document.paragraphs讀取文檔中的表格集與段落集。關(guān)鍵代碼如下:

path_desktop=os.path.join(os.path.expanduser("~"), 'Desktop').replace('\\','/')

path_反向郵件合并=path_desktop+'/反向郵件合并/'#設(shè)置反向郵件合并文件夾的路徑

if os.path.exists(path_反向郵件合并): #檢查并生成反向郵件合并文件夾

pass

else:

os.makedirs(path_反向郵件合并)

files=os.listdir(path_反向郵件合并)#獲取該文件夾下所有文件路徑

data1 = pd.DataFrame()#創(chuàng)建空的總表

data2 = pd.DataFrame()

for f in files:? ? ? ? ? ? ?#對(duì)于該文件夾下所有文件

if f.endswith('.docx'):? #如果文檔的后綴名是docx

document=docx.Document(path_反向郵件合并+f)#讀取文檔

tables=document.tables #獲取文檔中的表格集

paragraphs=document.paragraphs #獲取文檔中的段落集

else:

pass#忽略目錄下的非docx文件

2.4? 表格信息合并

表格中的信息存放在每個(gè)單元格中,通過(guò)table.cell.text方法可按位置獲取單元格內(nèi)的文本。首先創(chuàng)建與Word表格同樣尺寸的數(shù)據(jù)幀,遍歷表格中的所有單元格,將每個(gè)單元格內(nèi)的信息連接為一個(gè)文本后存放到數(shù)據(jù)幀的相同位置,便生成了與當(dāng)前Word文檔表格內(nèi)容一致的數(shù)據(jù)幀。但多個(gè)表格內(nèi)容不可直接縱向合并,否則會(huì)導(dǎo)致多種屬性的數(shù)據(jù)被存放到一列中,影響下一步的信息提取。因此將每個(gè)數(shù)據(jù)幀重塑為一行,再將所有行的數(shù)據(jù)幀合并。關(guān)鍵代碼如下:

for table in tables:? #對(duì)于每一個(gè)表格

row_num = len(table.rows) #獲取表格的行數(shù)

col_num = len(table.columns)#獲取表格的列數(shù)

total_num = row_num*col_num #獲取表格的單元格數(shù)

#創(chuàng)建與文檔中的每個(gè)表格同樣大小的數(shù)據(jù)幀

data1_small=pd.DataFrame(columns=range(col_num), index=range(row_num))

for row in range(row_num):

for col in range(col_num):

message = ''.join(table.cell(row,col).text.split())#獲取當(dāng)前單元格的信息

data1_small.iloc[row,col] = message? #存放到數(shù)據(jù)幀的對(duì)應(yīng)位置

data1_small = pd.DataFrame(data1_small.values.reshape (1,total_num))#將數(shù)據(jù)幀重塑為一行

data1 = pd.concat([data1, data1_small],ignore_index= True) #將該單行數(shù)據(jù)幀合并到總表1中

2.5? 段落信息合并

段落中的信息即該段落的全部文本,通過(guò)paragraph.text方法可按順序獲取段落文本。首先創(chuàng)建列數(shù)等于段落數(shù)的單行數(shù)據(jù)幀,遍歷所有段落,將每個(gè)段落的文本存放到數(shù)據(jù)幀的對(duì)應(yīng)列,便生成了包含當(dāng)前Word文檔所有段落文本的單行數(shù)據(jù)幀,再將所有行數(shù)據(jù)幀合并。關(guān)鍵代碼如下:

p_num = len(paragraphs)

data2_small = pd.DataFrame(columns=range(p_num), index=range(1))

for i,t in enumerate(paragraphs): #枚舉段落集中的段落與下標(biāo)

message = t.text #獲取當(dāng)前段落文本

data2_small.iloc[0,i] = message #存放到數(shù)據(jù)幀的對(duì)應(yīng)位置

data2_small = pd.DataFrame(data2_small.values.reshape (1,p_num))#重塑數(shù)據(jù)幀

data2 = pd.concat([data2, data2_small],ignore_index= True) #將該單行數(shù)據(jù)幀合并到總表2中

2.6? 信息輸出

將信息提取結(jié)果輸出為“反向郵件合并結(jié)果.xlsx”工作簿,其中包含“表格合并結(jié)果”與“段落合并結(jié)果”兩個(gè)工作表,關(guān)鍵代碼如下:

writer = pd.ExcelWriter(path_反向郵件合并+'反向郵件合并結(jié)果.xlsx')

data1.to_excel(writer,'表格合并結(jié)果')

data2.to_excel(writer,'段落合并結(jié)果')

writer.save()

3? 結(jié)? 論

Office的郵件合并功能可便捷地批量生成文檔,卻無(wú)法從大量Word文檔中匯總信息,如果缺乏自動(dòng)化、批量化的匯總方法,信息匯總的過(guò)程將成為耗時(shí)多、易出錯(cuò)、效率低的瓶頸環(huán)節(jié)。借助Python下的Python-docx庫(kù)與Pandas庫(kù),管理人員可以快速、準(zhǔn)確地從結(jié)構(gòu)一致的Word文檔中讀取數(shù)據(jù)并匯總至Excel工作簿,從而實(shí)現(xiàn)反向郵件合并功能。除了匯總Word文檔中的信息,Python的Pandas庫(kù)自帶功能齊全的統(tǒng)計(jì)分析函數(shù),用戶(hù)也可以方便地自定義函數(shù),對(duì)匯總后的信息進(jìn)行個(gè)性化的分析,極大地拓展了Python的分析能力,有效地提高了用戶(hù)的工作效率,具有良好的實(shí)用性與推廣價(jià)值。

參考文獻(xiàn):

[1] 張良均,王路,譚立云,等.Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn) [M].北京:機(jī)械工業(yè)出版社,2015:60-64.

[2] Kyxdpzy.從Excel到Python:數(shù)據(jù)分析進(jìn)階指南 [M/OL].(2019-04-27)http://www.doc88.com/p-7012538072968.html.

[3] MCKINNEY W.利用Python進(jìn)行數(shù)據(jù)分析:第2版 [M].徐敬一,譯.北京:機(jī)械工業(yè)出版社,2018:10-11.

[4] 恒盛杰資訊.Word/Excel/PPT2016高效辦公實(shí)戰(zhàn)從入門(mén)到精通 [M].北京:機(jī)械工業(yè)出版社,2017:366-373.

[5] 楊陽(yáng).Word/Excel/PPT2016辦公應(yīng)用從入門(mén)到精通 [M].天津:天津科學(xué)技術(shù)出版社,2017:570-574.

[6] 張志強(qiáng),趙越.零基礎(chǔ)學(xué)Python [M].北京:機(jī)械工業(yè)出版社,2015:85-86.

作者簡(jiǎn)介:馬孝宗(1989-),男,漢族,河南駐馬店人,信息管理員,助理工程師,碩士學(xué)位,研究方向:數(shù)據(jù)分析、辦公自動(dòng)化、深度學(xué)習(xí)。

主站蜘蛛池模板: 欧美日韩国产一级| 美女裸体18禁网站| 亚洲欧美成人在线视频| 国产精品制服| 国产男女免费完整版视频| 99久久精彩视频| 成人精品亚洲| 成人亚洲视频| 免费人成视网站在线不卡| 精品国产一二三区| 亚洲一欧洲中文字幕在线| 久久网综合| 欧美国产精品不卡在线观看| 成人永久免费A∨一级在线播放| 欧美日本在线播放| 中文字幕永久在线看| 久久亚洲国产一区二区| 国产SUV精品一区二区6| 欧美国产日韩一区二区三区精品影视| 国产真实二区一区在线亚洲| 伊在人亞洲香蕉精品區| 一级毛片免费不卡在线视频| 久久久久亚洲AV成人网站软件| 国产午夜精品一区二区三| 欧美午夜在线视频| 国产自在自线午夜精品视频| 国产精品综合色区在线观看| 日本欧美成人免费| AV不卡无码免费一区二区三区| 免费女人18毛片a级毛片视频| 99久久精品免费视频| 国产高清又黄又嫩的免费视频网站| 色婷婷亚洲综合五月| 国产精品永久免费嫩草研究院| 国产一区在线观看无码| 国产成人欧美| 成人福利在线视频免费观看| 欧美日韩国产一级| 无码中文AⅤ在线观看| 九色最新网址| 亚洲男人天堂久久| 亚洲综合第一页| 国产福利观看| 亚洲人在线| 亚洲欧州色色免费AV| 亚洲侵犯无码网址在线观看| 久久香蕉国产线看观看精品蕉| 中文字幕佐山爱一区二区免费| 内射人妻无套中出无码| 日韩精品一区二区三区大桥未久| 国产91视频免费| 91视频免费观看网站| 国产毛片久久国产| 日韩黄色大片免费看| 色综合成人| 女人18毛片一级毛片在线| 欧美日韩精品在线播放| 亚洲伊人天堂| 亚洲一级毛片在线播放| 激情综合婷婷丁香五月尤物| 国产成人在线无码免费视频| 国产精品福利在线观看无码卡| 久久青青草原亚洲av无码| 色吊丝av中文字幕| 亚洲IV视频免费在线光看| 亚洲精品成人片在线观看| 午夜影院a级片| 亚洲欧美不卡视频| 久久人搡人人玩人妻精品| 精品人妻AV区| 免费va国产在线观看| 无码福利视频| 伊人国产无码高清视频| 国产探花在线视频| 日韩在线网址| 亚洲Av激情网五月天| 91香蕉国产亚洲一二三区 | 99视频在线观看免费| 午夜爽爽视频| 免费观看成人久久网免费观看| 国产免费久久精品99re丫丫一| 3p叠罗汉国产精品久久|