簡介
現在有個需求,我們根據需要 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("保存完成!")