Python辦公神器:教你使用Python批量查找Excle數(shù)據(jù)
有時(shí)候我們需要對(duì)Excel中的數(shù)據(jù)進(jìn)行一些復(fù)雜的操作,比如批量查找、篩選、合并等,這時(shí)候用Python就可以大大提高我們的效率和準(zhǔn)確性。
在本教程中,我們將學(xué)習(xí)如何使用Python的openpyxl庫(kù)來(lái)批量查找Excle數(shù)據(jù)。openpyxl是一個(gè)專門(mén)用來(lái)處理Excel文件的Python庫(kù),它可以讀取和寫(xiě)入Excel文件,以及對(duì)Excel文件中的數(shù)據(jù)進(jìn)行各種操作。我們將通過(guò)一個(gè)具體的例子來(lái)演示openpyxl庫(kù)的使用方法和api用途。
例子:批量查找檔案記錄
假設(shè)我們有一個(gè)Excel文件,里面存儲(chǔ)了一些檔案記錄,每個(gè)檔案都有一個(gè)名稱、配置、提交日期等信息。這個(gè)Excel文件有多個(gè)工作表sheet,每個(gè)sheet代表了一個(gè)月份,比如1月、2月、3月等。我們現(xiàn)在想要把所有日期工作表中的特定行都提取出來(lái)整合成一個(gè)新表,比如我們想要查找所有名稱為“張三”的檔案記錄,并把它們放到一個(gè)新的Excel文件中。
這個(gè)任務(wù)用Python和openpyxl庫(kù)就可以很容易地實(shí)現(xiàn)。我們只需要按照以下步驟來(lái)操作:
步驟一:導(dǎo)入openpyxl庫(kù)
首先,我們需要導(dǎo)入openpyxl庫(kù),這樣我們才能使用它提供的功能。我們可以用下面的代碼來(lái)導(dǎo)入openpyxl庫(kù):
import openpyxl
步驟二:加載Excel文件
接下來(lái),我們需要加載我們要處理的Excel文件,也就是檔案記錄Excel文件。我們可以用openpyxl庫(kù)中的load_workbook函數(shù)來(lái)加載Excel文件,并返回一個(gè)Workbook對(duì)象。Workbook對(duì)象代表了整個(gè)Excel文件,它包含了所有的工作表sheet和其他信息。我們可以用下面的代碼來(lái)加載Excel文件,并把返回的Workbook對(duì)象賦值給一個(gè)變量wb:
wb = openpyxl.load_workbook('檔案記錄.xlsx')
注意,這里的'檔案記錄.xlsx'是我們要處理的Excel文件的名稱,你需要根據(jù)你自己的文件名來(lái)修改。
步驟三:創(chuàng)建一個(gè)新的工作簿
然后,我們需要?jiǎng)?chuàng)建一個(gè)新的工作簿W(wǎng)orkbook對(duì)象,用來(lái)存放我們提取出來(lái)的數(shù)據(jù)。我們可以用openpyxl庫(kù)中的Workbook函數(shù)來(lái)創(chuàng)建一個(gè)新的工作簿,并返回一個(gè)Workbook對(duì)象。我們可以用下面的代碼來(lái)創(chuàng)建一個(gè)新的工作簿,并把返回的Workbook對(duì)象賦值給一個(gè)變量new_wb:
new_wb = openpyxl.Workbook()
步驟四:創(chuàng)建一個(gè)新的工作表
接著,我們需要在新創(chuàng)建的工作簿new_wb中創(chuàng)建一個(gè)新的工作表sheet,用來(lái)存放我們提取出來(lái)的數(shù)據(jù)。我們可以用Workbook對(duì)象中的create_sheet方法來(lái)創(chuàng)建一個(gè)新的工作表,并返回一個(gè)Worksheet對(duì)象。Worksheet對(duì)象代表了一個(gè)單獨(dú)的工作表sheet,它包含了所有的單元格cell和其他信息。我們可以用下面的代碼來(lái)創(chuàng)建一個(gè)新的工作表,并把返回的Worksheet對(duì)象賦值給一個(gè)變量new_ws:
new_ws = new_wb.create_sheet('提取結(jié)果')
注意,這里的'提取結(jié)果'是我們創(chuàng)建的新工作表的名稱,你可以根據(jù)你自己的需求來(lái)修改。
步驟五:復(fù)制表頭
然后,我們需要把原來(lái)的Excel文件中的表頭復(fù)制到新創(chuàng)建的工作表中,也就是把第一行的數(shù)據(jù)復(fù)制過(guò)來(lái)。我們可以用Worksheet對(duì)象中的append方法來(lái)向工作表中添加一行數(shù)據(jù),這個(gè)方法接受一個(gè)列表作為參數(shù),列表中的每個(gè)元素代表了一列的數(shù)據(jù)。我們可以用下面的代碼來(lái)復(fù)制表頭:
# 獲取原來(lái)Excel文件中的第一個(gè)工作表
ws = wb.worksheets[0]
# 獲取第一行的數(shù)據(jù)
header = [cell.value for cell in ws[1]]
# 向新創(chuàng)建的工作表中添加一行數(shù)據(jù)
new_ws.append(header)
注意,這里我們假設(shè)所有的工作表sheet都有相同的表頭,所以我們只需要獲取第一個(gè)工作表中的第一行數(shù)據(jù)即可。如果你的Excel文件中的工作表有不同的表頭,你需要根據(jù)你自己的情況來(lái)修改。
步驟六:遍歷所有工作表和單元格
接下來(lái),我們需要遍歷原來(lái)Excel文件中的所有工作表sheet,再遍歷每個(gè)工作表中的第一列(名稱列,也可以看作A列)每一個(gè)有數(shù)據(jù)的單元格cell,對(duì)單元格中的內(nèi)容進(jìn)行判斷,如果單元格中的文字為我們需要查找的檔案名,就把這一行提取出來(lái)放到新創(chuàng)建的工作表中。我們可以用下面的代碼來(lái)遍歷所有工作表和單元格:
# 遍歷原來(lái)Excel文件中的所有工作表
for ws in wb.worksheets:
# 遍歷每個(gè)工作表中第一列每一個(gè)有數(shù)據(jù)的單元格
for cell in ws['A']:
# 判斷單元格中的內(nèi)容是否為我們需要查找的檔案名,比如“張三”
# 獲取單元格所在的行號(hào)
row = cell.row
# 根據(jù)行號(hào)獲取這一行的數(shù)據(jù)
data = [cell.value for cell in ws[row]]
# 向新創(chuàng)建的工作表中添加一行數(shù)據(jù)
new_ws.append(data)
注意,這里我們假設(shè)我們要查找的檔案名是“張三”,你可以根據(jù)你自己的需求來(lái)修改。
步驟七:保存新創(chuàng)建的工作簿
最后,我們需要把新創(chuàng)建的工作簿new_wb保存到一個(gè)新的Excel文件中,這樣我們就可以查看我們提取出來(lái)的數(shù)據(jù)了。我們可以用Workbook對(duì)象中的save方法來(lái)保存工作簿,這個(gè)方法接受一個(gè)文件名作為參數(shù),表示要保存的Excel文件的名稱。我們可以用下面的代碼來(lái)保存工作簿:
new_wb.save('提取結(jié)果.xlsx')
注意,這里的'提取結(jié)果.xlsx'是我們要保存的Excel文件的名稱,你可以根據(jù)你自己的需求來(lái)修改。
總結(jié)
通過(guò)以上七個(gè)步驟,我們就完成了使用Python和openpyxl庫(kù)批量查找Excle數(shù)據(jù)的任務(wù)。我們可以打開(kāi)'提取結(jié)果.xlsx'文件,看到我們提取出來(lái)的所有名稱為“張三”的檔案記錄。
通過(guò)這個(gè)例子,我們學(xué)習(xí)了如何使用openpyxl庫(kù)中的一些常用的函數(shù)和方法,比如load_workbook、Workbook、create_sheet、append、save等。openpyxl庫(kù)還有很多其他的功能,比如修改單元格樣式、插入公式、添加圖表等,你可以參考o(jì)penpyxl官方文檔來(lái)進(jìn)一步學(xué)習(xí)和探索。