python:实现对比2个excel文件匹配数据写入新excel

测试业务需要:

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文件

  • 15
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海是倒过来的天~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值