接上一篇文章的内容,每一句话都有对应的汇报人,设会议记录表为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-列'指定表中的单元,'姓名'是向0行0列这个单元格写入的内容
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\Z21070567\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:
员工信息表B:
file1 = "C:\Users\Z21070567\Desktop\员工信息表.xlsx" #员工信息表B所在的路径
复制Excel表所在的路径时,要将【】更改为【 】
hid_index1 = 0 # 表B要匹配的列索引(与会议记录表相同的部分,即姓名) target_index1 = 1 # 表B目标数据列索引(要匹配并填入表A的数据,即部门)
Python中,可以理解为从左到右从0开始数起,姓名所在的列为第0列,部门所在的列为第1列。
后面也没啥好说的了,照着改,运行后得到的结果:



