python:实现对比2个excel文件匹配数据写入新excel
测试业务需要:1.现有2个excel文件,a.xlsx和b.xlsxa.xlsx中有2个 sheet,分别是 a的data1,a的data2,如下图b.xlsx中有2个 sheet,分别是 b的data1,b的data2,如下图2.a.xlsx的data1 和b.xlsx的data2 都有A列,且A列数据值有部分是一样的现需要将a.xlsx的data1和b.xlsx的data2匹配生成c.xlsx
·
测试业务需要:
1.现有a.xlsx
a.xlsx中有2个 sheet,分别是 a的data1,a的data2,
a的data2,如下图
2.a.xlsx的 data1 和data2 都有A列,且A列数据值有部分是一样的
现需要将 data1和data2匹配生成c.xlsx的data3,
匹配规则:把a.xlsx的data2复制 生成 c.xlsx的 data3
data3的D列值都是空的,D列对应的A列值部分和a.xlsx的 data1的A列值相同,且a.xlsx的 data1的A列对应的B列都有值,但是data3的D列值都是空的,所以需要把相同A列值对应的“英译”列值都匹配复制到 c.xlsx生成 data3中
实现:
def test_data4():
file1 = "data/a.xlsx"
# 打开a.xlsx
wb1 = xlrd.open_workbook(filename=file1)
# a.xlsx要匹配的列索引
hid_index1 = 0
# a.xlsx目标数据列索引
target_index1 = 1
# a.xlsx的sheet=a的data1
sheet1 = wb1.sheet_by_name('a的data1')
# sheet=a的data1 的总行数
rowNum1 = sheet1.nrows
# sheet=a的data1的sheet的总列数
colNum1 = sheet1.ncols
# sheet=a的data1 要匹配的列索引( 就是sheet=a的data1中的B列)
hid_index2 = 0
# sheet=a的data2 目标数据列索引( 就是sheet=a的data2中的E列)
target_index2 = 3
# 获取表格sheet=a的 data2
sheet2 = wb1.sheet_by_name('a的data2')
# sheet=a的 data2 的总行数
rowNum2 = sheet2.nrows
# sheet=a的 data2的总列数
colNum2 = sheet2.ncols
# xlwt准备生成一个新的文件的sheet=c的data3
write_workbook = xlwt.Workbook()
write_sheet = write_workbook.add_sheet('c的data3', cell_overwrite_ok=True)
for index2 in range(0, rowNum2):
for col_index in range(0, colNum2):
# 遍历表2的每一行每一列,把对应的单元设置到新的文件中,即复制了表2的数据
write_sheet.write(index2, col_index, sheet2.cell_value(index2, col_index))
# 在遍历列过程中,如果碰到目标数据列索引.即需要补充的字段,则进行遍历表1,判断的id索引匹配
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):
write_workbook,style_list = copy2(wb1)
xf_index = sheet2.cell_xf_index(1, rowNum1)
# 如果两个表的id相同则把表1的单元内容设置到表2对应的单元格
write_sheet.write(index2, col_index,
sheet1.cell_value(index1,target_index1),style_list[xf_index])
# 保存新的文件
write_workbook.save("data/c.xlsx")
得到c.xlsx文件
更多推荐
已为社区贡献3条内容
所有评论(0)