Python對兩個Excel操作
阿新 • • 發佈:2020-10-26
簡介
現在有個需求,我們根據需要 data.xlsx
中某些單元格的內容來查詢 find.xlsx
中的某些內容。
資料內容(為了資料安全,所有資料均已模糊處理)
data.xlsx內容:
find.xlsx內容:
任務目的
從data.xlsx中獲取姓名,學號欄位,然後在find.xlsx中根據姓名查詢000欄位,將匹配到的000欄位,姓名和學號欄位寫入儲存到新檔案中。
思路過程
核心模組:openpyxl
-
讀取data.xlsx檔案,然後遍歷所有行,將姓名和學號儲存到字典1中。
-
讀取find.xlsx檔案,遍歷所有行,將姓名和000儲存到字典2中。
-
建立新xlsx檔案,遍歷字典1,如果name也在字典2中,則儲存到新xlsx檔案中。
實現程式碼
import openpyxl # 載入第一個Excel wb1 = openpyxl.load_workbook("data.xlsx") # 載入Excel檔案 ws1 = wb1[wb1.sheetnames[0]] # 獲取第一張資料表 # 載入第二個Excel wb2 = openpyxl.load_workbook("find.xlsx") # 載入Excel檔案 ws2 = wb2[wb2.sheetnames[0]] # 獲取第一張資料表 # 表名.cell(row=r,column=c).value 獲取指定單元格內容 sno_d = {} #字典1,key:name;value:sno id_d = {} #字典2,key:name;value:id # 1.從表1中獲取所有資料,儲存到字典中 for r in range(3,ws1.max_row): # 獲取資料 name = ws1.cell(row=r, column=3).value sno = ws1.cell(row=r, column=4).value # 儲存資料到字典1中 sno_d[name] = sno # 2.遍歷表2,尋找對應的id for r in range(4,ws2.max_row): # 獲取資料 name = ws2.cell(row=r, column=3).value ID = ws2.cell(row=r, column=2).value # 儲存資料到字典1中 id_d[name] = ID # 3.寫資料到Excel檔案中 save_excel = openpyxl.Workbook() save_sheet = save_excel.active # 獲取當前活動的表,就是第一張表 save_sheet['A1'] = "姓名" save_sheet['B1'] = "學號" save_sheet['C1'] = "000" # 寫入資料 r = 2 # 遍歷第一個字典 for name in sno_d: # 判斷是否在第二個字典中 if name in id_d: save_sheet.cell(row=r, column=1).value = name save_sheet.cell(row=r, column=2).value = str(sno_d[name]) ID = id_d[name] save_sheet.cell(row=r, column=3).value = ID[-6:-1]+ID[-1] print(f"正在儲存第{r-1}條資料...姓名為:{name}") r = r + 1 save_excel.save("學號對應表.xlsx") print("儲存完成!")