相景麗
(山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)
Python語言以其強(qiáng)大的處理能力與平臺(tái)兼容性,被廣泛應(yīng)用于各個(gè)行業(yè)的軟件項(xiàng)目開發(fā)中,而Python框架的數(shù)據(jù)表文件處理機(jī)制對于以O(shè)ffice和WPS為代表的辦公軟件的無人自動(dòng)化操作具有良好的適用性。
隨著計(jì)算機(jī)技術(shù)的普及,各企業(yè)中基本實(shí)現(xiàn)了基于Office或WPS的信息化辦公模式,辦公軟件的廣泛應(yīng)用在減少紙張消耗、提升信息傳遞效率、實(shí)現(xiàn)數(shù)據(jù)規(guī)范化方面有著巨大優(yōu)勢。但隨著企業(yè)規(guī)模的擴(kuò)大,日常辦公所產(chǎn)生的數(shù)據(jù)文件的數(shù)量也隨之大幅增長,各部門所提交的大量Excel數(shù)據(jù)表文件往往需要安排專人逐一打開后按照規(guī)范進(jìn)行集中處理,在此過程中存在著大量重復(fù)的繁瑣操作,采用人工處理模式不僅效率低下、且存在錯(cuò)誤率高的問題。Python-pandas模塊作為專用的數(shù)據(jù)表處理引擎,在實(shí)現(xiàn)Excel數(shù)據(jù)表文件的自動(dòng)化批量處理工作方面有著優(yōu)異表現(xiàn)[1],因此本文嘗試引入Python框架來解決大批量規(guī)范化處理Excel數(shù)據(jù)表文件的問題。
本文所設(shè)計(jì)的Excel數(shù)據(jù)表文件自動(dòng)批量處理程序的實(shí)現(xiàn)流程如圖1所示,程序首先獲取到文件夾中全部待處理數(shù)據(jù)表文件的文件名并構(gòu)建文件名集合,然后自動(dòng)讀取文件名集合中的第一個(gè)文件并按照用戶指定的規(guī)則對數(shù)據(jù)表文件中的相應(yīng)數(shù)據(jù)進(jìn)行處理,在處理完成后進(jìn)行該文件的保存操作。接下來,程序自動(dòng)從文件名集合中讀取下一個(gè)數(shù)據(jù)表文件并重復(fù)以上操作步驟,直到全部數(shù)據(jù)表文件被處理完畢。
圖1 自動(dòng)批量處理工作的流程圖
Python開發(fā)框架中提供的os模塊為開發(fā)人員提供了管理和訪問文件系統(tǒng)的功能,在本應(yīng)用中,通過該模塊自動(dòng)獲取所有的待處理Excel文件的名字記錄集,并基于此記錄集實(shí)現(xiàn)對全部待處理的Excel文件的遍歷操作,程序可以逐一從記錄集中讀取文件名稱并對該Excel文件進(jìn)行訪問。而pandas模塊則提供了強(qiáng)大的數(shù)據(jù)表處理能力[2],程序基于該模塊來構(gòu)建用戶所提出的數(shù)據(jù)處理規(guī)則,并對數(shù)據(jù)表中的行、列進(jìn)行相應(yīng)的數(shù)據(jù)添加、更新和刪除操作。
同時(shí),為應(yīng)對可能出現(xiàn)的個(gè)別Excel數(shù)據(jù)表中的內(nèi)容或格式錯(cuò)誤導(dǎo)致程序崩潰的情況,在數(shù)據(jù)處理階段可以引入錯(cuò)誤捕獲和拋出機(jī)制try-except,將出現(xiàn)內(nèi)容錯(cuò)誤的文件名做輸出提示處理后,直接讀取下一個(gè)數(shù)據(jù)表文件并繼續(xù)自動(dòng)進(jìn)行數(shù)據(jù)處理。避免因發(fā)生文件數(shù)據(jù)錯(cuò)誤而導(dǎo)致自動(dòng)化批量處理任務(wù)的中斷。
1) 在Python程序中導(dǎo)入支持模塊,其中pandas模塊用于處理Excel中的數(shù)據(jù),os模塊則用于訪問文件系統(tǒng)。
import pandas as exl
import os
2) 使用Python os模塊所提供的listdir()方法獲取文件夾中全部待處理的Excel數(shù)據(jù)文件的文件名并構(gòu)建文件名記錄集,并基于該記錄集進(jìn)行對所有Excel數(shù)據(jù)文件的遍歷處理操作。
Excl_name = os.listdir(r'文件夾路徑')#獲取全部數(shù)據(jù)表文件名并創(chuàng)建記錄集
for i in range(len(Excl_name)): #使用len函數(shù)獲取記錄集的長度,即待處理文件的總數(shù),并以此構(gòu)建循環(huán)結(jié)構(gòu)逐一處理數(shù)據(jù)文件
3) 文件的讀取與保存使用Python pandas模塊所提供的read_excel()方法和to_excel()方法實(shí)現(xiàn)。而Excel數(shù)據(jù)表文件中數(shù)據(jù)的處理操作則通過insert()、loc()、at()、drop()方法完成。
efile = exl.read_excel('文件夾路徑' + Excl_name [i]) #讀取文件
try: #開始捕獲異常
efile.insert(插入位置, '新列的名稱', '初始值') #添加列操作,位置值基于0開始
efile = efile.drop(['要?jiǎng)h除的列名'],axis=1)#刪除列操作
df.loc[行號(hào),'列名稱']=新數(shù)據(jù) #更新數(shù)據(jù)的操作
df.at['行名稱'] = [數(shù)據(jù)隊(duì)列]#添加行操作
df.drop(df.index[行號(hào)隊(duì)列], inplace=True) #刪除行操作
except Exception as e: #記錄出現(xiàn)錯(cuò)誤的文件名
print("文件出現(xiàn)異常:",Excl_name [i])
continue #繼續(xù)處理下一個(gè)數(shù)據(jù)文件
efile.to_excel('D://excel_py//' + Excl_name [i])#將更新結(jié)果保存至數(shù)據(jù)文件
需要注意的是,在Python對Excel文件的自動(dòng)化處理過程中,pandas模塊的部分功能依賴于以下三個(gè)模塊:fsspec、xlwt和xlwd運(yùn)行[3],因此除了需要在程序中直接調(diào)用pandas與os模塊以外,還需要基于Pip服務(wù)在Python開發(fā)框架中部署fsspec模塊、xlwt和xlwd模塊,為pandas對數(shù)據(jù)表文件進(jìn)行讀取和保存操作提供支持。
隨著辦公軟件的廣泛應(yīng)用,企業(yè)在運(yùn)營管理過程中產(chǎn)生了大量的Excel數(shù)據(jù)表文件需要處理,傳統(tǒng)的人工處理方式存在效率低、易出錯(cuò)的問題。而Python語言在數(shù)據(jù)自動(dòng)化處理方面所具備的優(yōu)勢,在Excel數(shù)據(jù)表文件的數(shù)據(jù)處理工作方面有著優(yōu)異表現(xiàn)。本文所提出的解決方案基于Python-os、Python- pandas等模塊實(shí)現(xiàn)了對大批量Excel數(shù)據(jù)表文件的自動(dòng)化處理,有效提升了企業(yè)的信息化辦公水平與日常工作效率。