【摘" 要】 人工智能下批量化處理Eexcl數據文件已成趨勢,文章從Python編程出發(fā)分析Openpyxl模塊的批量化處理邏輯,重點闡述了批量化處理Eexcl文件的思路與遇到的疑難雜癥,并從問題入手,分析了從操作單個工作表到操作多個工作表再到操作多個工作簿的工作表的方法和邏輯。
【關鍵詞】 Openpyxl模塊;批量化處理;編程機制
一、Python中的Openpyxl模塊
(一)Python的邏輯存儲結構
Python可用于人工智能領域。所謂人工智能,通俗來說就是使計算機等設備延伸人類智力,模擬人類智能行為對外界作出響應。Python善于處理批量的數據,可以將工作者從大量繁瑣、機械的重復性工作中解脫出來,將注意力集中到更有價值的事情上。Python還可以用于辦公自動化、測試自動化、運維自動化等相關領域。
(二)Excel文檔的邏輯存儲結構
在Eexcl文件當中,最原始的數據存儲的邏輯關系為一對多的邏輯包含關系,即一個工作簿(Workbook)文件包含多個工作表(Sheet),一個工作表(Sheet)包含多個單元格(Cell),傳統(tǒng)的Eexcl表格只能操作當前的這個工作表中的單元格,不能同時操作多個工作表以及多個工作表以下的單元格。
(三)Openpyxl模塊
Openpyxl是一個第三方庫,可以處理Excel文件的庫。Penpyxl模塊是一個讀寫Excel2010文檔的Python庫,綜合性較強,能夠同時讀?。≧ead)和修改(Write)Excel文檔。Openpyxl模塊有三大類(首字母大寫)。主要的思路為:創(chuàng)建Excel文件→創(chuàng)建Sheet頁→寫入數據,簡單來說,一個工作簿的底層存儲邏輯為字典,字典為鍵值對的存儲結構,由Key-Value的鍵值對進行數據存儲,簡單包含來寫:Workbook—Sheet,Sheet—Cell,而每一層的數據結構分別為字典—元組—列表(值)結構,字典是另一種可變容器模型,且可存儲任意類型對象。字典的每個鍵值 Key:Value 對用冒號“:”分割,每個鍵值對之間用逗號“,”分割,整個字典包括在花括號“{}”中,格式:d={key1:value1,key2:value2};笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組。當關系是一張表,二維表中的行表中的每行(即數據庫中的每條記錄)就是一個元組,每列就是一個屬性。在二維表里,元組也稱為記錄。
二、批量化處理的編程邏輯
(一)對單元格Cell的操作
1. 讀取相關數據的方法,存儲為元組(Tuple)
首先獲取每一行(row),從最小列(column)開始讀取,讀取的方法為for i in s.iter_rows(min_col=1),其存儲邏輯為一行一行的元組, Python中元組是有序且不可被修改的數據集合。通常使用小括號進行定義元組,元組內的元素之間使用逗號分隔。
運行截圖如下:
根據運行截圖可以清楚地看到,這個Eexcl表格中單元格Cell在Sheet1當中,單元格的位置從A1-AX,B1-BX,C1-CX,D1-DX等。
2. 針對每一行內容進行切片,獲取需要的單元格
操作方法為根據得到的元組,將元組中需要的元素搜集起來,描寫的方法為rows[0],rows[1]…rows[x],從第一列到第X列,由于元組的地址從[0]開始,第一列的元素即為rows[0],其運行截圖如下:
根據運行截圖可以清晰地看到相關的單元格列數已經搜集起來,但是此處的問題是僅顯示了單元格,并沒有將里面的數據顯示出來。
3. 顯示單元格的數據,進行數據篩選和合并
若要完整顯示相關的數據,還需要一步,即顯示單元格的數據,方法為rows[0].value,其運行截圖如下:
此處只是單元格簡單顯示某一列的內容,如果要對單元格的數據進行篩選和分析,還需要運用循環(huán)和條件If來進行分析,分析的思路與方法如下:If條件,但是此處的If條件語句可以分析所有的數據,前提是必須要把所需要的數據搜集起來。
對單元格Cell的操作有三個主要特征:一是讀取每一行,然后獲取需要的列數;二是根據所有的列數,對需要的列數進行切片,然后根據If條件判斷,獲取需要的值。
案例:如何提取某部分值,再進行篩選?將里面的姓名和觀看時間搜集起來,再進行數據篩選:字符串切片。
for rows in sheet.iter_rows(min_row=1):
name=rows[0].value
time=rows[2].value
time_int=int(time[0:-2])
if time_intlt;100:
print(name,time_int)
(二)對工作表Sheet的操作
1. 操作單個工作表
操作單個工作表的邏輯在于搜集起來所有的工作簿,由于工作簿的存儲邏輯為字典,字典的一個特定的含義即為鍵值對,那么就可以直接根據字典的邏輯獲取其單個工作表,寫法為工作簿名字[‘工作表名字’],即s=w['Sheet1'],其中w代表工作簿的命名;還有一種操作方法根據邏輯存儲結構來獲取,即首先獲取所有的工作簿,再根據地址找到需要的工作簿,即所有工作簿名字[地址],寫法實例:w.worksheets[0],其中worksheets為Openpyxl里面固定的一個方法,目的便是獲取所有的工作簿。
2. 同時操作多個工作表
遍歷法即利用循環(huán)結構將其需要的元素進行一個個地搜集,在Python當中可以利用for循環(huán)進行工作表的搜集,寫法為for s_name in wb.sheetnames,將需要的內容鑲嵌到這個庫當中,即為For循環(huán)所有的Sheet表。
圖中可以清楚地看到這個Eexcl表格中包含三個工作表,Sheet1是達州,Sheet2為成都,Sheet3為巴中,這三個工作表可以根據for循環(huán)的邏輯按照順序:Sheet1—Sheet2—Sheet3,這樣便可把所有需要的文件遍歷出來。
案例:計算達州,巴中,成都第二行的總和。其主要代碼如下:
for s_name in wb.sheetnames:
sheet=wb[s_name]
to=0
for row in sheet.iter_rows(min_row=2):
c=row[1]
to=to+c.value
print(s_name,to)
其運行截圖如下:
解決問題的主要思路是遍歷Sheets的名字,將所有的Sheet表的名字找到相應的Sheet表,再單獨操作不同的Sheet表,并且運用相關的邏輯運算方法把需要的單元格進行操作來運行一遍。此處主要運用求和算法累加,利用一個新的變量To對需要的單元格的進行累加求和,并將值搜集起來,在對需要的單元格進行計算的時候仍然需要對單元格進行遍歷,因為不止一個單元格,需要將所有的單元格都梳理一遍再進行運算。
(三)對工作簿Workbook的操作
1. 操作單個工作簿
操作單個工作簿的邏輯與工作表一致,要學會打開不同的工作簿來進行操作,打開工作簿進行運算的方法就是openpyxl.load_workbook(“文件名”),這個方法最大的問題在于容易文件打開出錯,其主要的原因在于,Python主程序必須與Eexcl文件邏輯放在同一菜單下,如果不在同一菜單,就無法對文件進行操作。圈住的則為需要操作的Eexcl文件,下面的Test2則為Python中需要運行的文件,可以清楚地看到,兩者在同一級別上,即在同一工程文件下的二級目錄,這樣的文件只需要一個寫法,便可輕易打開,其打開方法為openpyxl.load_workbook('collect.xlsx'),即調用openpyxl自帶的方法并且將其打開。
2. 操作多個工作簿
操作多個工作簿最大的問題在于必須解決多個工作簿不在同一路徑的問題,如果在同一路徑下,那么只能打開一個工作簿,即要解決不同的路徑問題,需要在此處引入一個Python自帶的路徑庫,即Os與Is對文件進行操作的庫,這個路徑庫為os.path。首先需要將這個包導入,導入以后就可以打開不同的文件庫了,打開方法為:os.path.join(“一級文件”“二級文件”“X級文件”),根據這個方法就可以很便利地將任意目錄的文件打開。此處可以將需要操作的Eexcl文件放在一個文件夾下面,然后再打開這個文件夾,操作下面的Eexcl文件。有了文件夾即可以對需要的文件進行數據處理與操作了,方法也是利用For循環(huán)遍歷文件夾的工作簿,然后再遍歷工作簿下面不同的工作表,即可以將所有需要操作的Eexcl表格進行批量化處理與實踐。其運行截圖如下:
其主要代碼如下:
di_path=os.path.join(“新建文件夾”)
#獲取所有目錄的名字:
for dir_name in os.listdir(di_path):
path=os.path.join(di_path,dir_name)
wb=openpyxl.load_workbook(path)
根據以上的程序可以清楚地看見,首先獲取文件夾,然后獲取所有文件夾下面Eexcl工作簿的名字,根據名字將其路徑連接起來,最后再根據循環(huán)結構遍歷所有的文件內容,這樣就可以將所有的Eexcl文件進行批量化處理了。
三、結語
Openpyxl模塊對于批量化處理的優(yōu)勢在于根據Eexcl文件的操作與Openpyxl模塊的內部存儲機制一一對應,將不同存儲邏輯下的Eexcl文件進行搜集與分析,對Eexcl文件進行詳細的梳理與分析,簡單來說,Openpyxl模塊就是專門為Eexcl設計的進行批量化處理的最優(yōu)解,原因在于Workbook工作簿包含Sheet表,Sheet表又包含Cell(單元格),與Eexcl的內在存儲機制一一對應,從而實現Eexcl文件的智能化處理。
參考文獻:
[1] 孟麗,王慶芳. 計算機技術在辦公自動化中的應用[J]. 中國高新科技,2023(01):123-125.
[2] 劉靜,王鳳,孟星,等. Python在數據可視化中的應用案例分析[J]. 電子技術,2023,52(05):391-393.
[3] 汪凡. 計算機技術在辦公自動化中的應用探究[J]. 軟件,2021,42(08):110-112+134.