【实践】Python实现VLOOKUP功能:核对两个Excel表数据,将查询列的对应值填入另一个Excel表

简单介绍

接上一篇文章的内容,每一句话都有对应的汇报人,设会议记录表为A,员工信息表为B,当在会议记录表A表中填入汇报人的名字时,能够根据名字在员工信息表B中查到这个人所在的部门,并填到会议记录表A中。

完整代码

import xlrd
import xlwt

#创建excel文件
book = xlwt.Workbook(encoding='utf-8',style_compression=0)
# 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格。
sheet = book.add_sheet('Output', cell_overwrite_ok=True)
# 向表中添加数据标题 
sheet.write(0, 0, '姓名')  # 其中的'0-行, 0-列'指定表中的单元,'姓名'是向00列这个单元格写入的内容
sheet.write(0, 1, '部门')
sheet.write(0, 2, '上周的KPI')  
sheet.write(0, 3, '没达标的原因') 
sheet.write(0, 4, '遇到的问题') 
sheet.write(0, 5, '解决方法')

#----------------------------------以上是上一篇文章用到的创建新的Excel的代码,目前没尝试过直接打开ExcelB,把A中对应的内容复制进去后再关闭B。

file1 = "C:\\Users\\Desktop\\员工信息表.xlsx"		#员工信息表B所在的路径
wb1 = xlrd.open_workbook(filename=file1)	#打开员工信息表B
hid_index1 = 0		# 表B要匹配的列索引(与会议记录表相同的部分,即姓名)
target_index1 = 1		# 表B目标数据列索引(要匹配并填入表A的数据,即部门)
sheet1 = wb1.sheet_by_index(0)		# 表B的sheet
rowNum1 = sheet1.nrows		# 表B的sheet的总行数
colNum1 = sheet1.ncols		# 表B的sheet的总列数

file2 = "F:\\Microsoft VS Code\\Output.xls"		#会议记录表A所在的路径
wb2 = xlrd.open_workbook(filename=file2)		#打开会议记录表A
hid_index2 = 0		# 表A要匹配的列索引(与员工信息表B相同的部分,即姓名)
target_index2 = 5		# 员工信息表B目标数据列索引(匹配后放入的位置)
sheet2 = wb2.sheet_by_index(0)# 表A的sheet,通过索引获取表格
rowNum2 = sheet2.nrows		# 表A的sheet的总行数
colNum2 = sheet2.ncols		# 表A的sheet的总列数

for index2 in range(0,rowNum2):
	for col_index in range(0,colNum2):			# 遍历会议记录表A的每一行每一列
		sheet.write(index2,col_index,sheet2.cell_value(index2,col_index))		# 在遍历列过程中,如果碰到目标数据列索引.即需要补充的字段:部门,则进行遍历表B,判断的姓名索引匹配

		if col_index == target_index2:
			for index1 in range(1,rowNum1):
				hid1 = sheet1.cell_value(index1,hid_index1)
				if hid1 == sheet2.cell_value(index2,hid_index2):		# 如果两个表的姓名相同则把员工信息表B的单元内容设置到会议记录表A对应的单元格
					
					sheet.write(index2,col_index,sheet1.cell_value(index1,target_index1))
book.save('Output.xls') 

代码解析

会议记录表A:
【实践】Python实现VLOOKUP功能:核对两个Excel表数据,将查询列的对应值填入另一个Excel表_第1张图片
员工信息表B:
【实践】Python实现VLOOKUP功能:核对两个Excel表数据,将查询列的对应值填入另一个Excel表_第2张图片

file1 = "C:\\Users\\Z21070567\\Desktop\\员工信息表.xlsx"		#员工信息表B所在的路径

复制Excel表所在的路径时,要将【\】更改为【\ \】

hid_index1 = 0		# 表B要匹配的列索引(与会议记录表相同的部分,即姓名)
target_index1 = 1		# 表B目标数据列索引(要匹配并填入表A的数据,即部门)

Python中,可以理解为从左到右从0开始数起,姓名所在的列为第0列,部门所在的列为第1列。
后面也没啥好说的了,照着改,运行后得到的结果:
【实践】Python实现VLOOKUP功能:核对两个Excel表数据,将查询列的对应值填入另一个Excel表_第3张图片

你可能感兴趣的:(pandas,openpyxl,xlrd等,python,vscode)