资讯专栏INFORMATION COLUMN

测试小工具:python实现对比2个excel文件匹配数据写入新excel

meislzhua / 1502人阅读

摘要:测试业务需要现有中有个分别是的,的,的,如下图的和都有列,且列数据值有部分是一样的现需要将和匹配生成的,匹配规则把复制到的文件中,中的列值取值是和都有列匹配对应的的列值实现打开要匹配的列索引目标数据列索引的的的的的总行数的的的总列数的要匹

测试业务需要:

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,

匹配规则:把data2复制到c.xlsx的data3文件中,data3中的E列值取值是  data1 和data2 都有A列匹配对应的data1的E列值

实现:

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 = 1    # sheet=a的data2 目标数据列索引( 就是sheet=a的data2中的E列)    target_index2 = 4    # 获取表格sheet=a的 data2    sheet2 = wb1.sheet_by_name("a的data2")      # sheet=a的 data2 的总行数    rowNum2 = sheet2.nrows    # sheet=a的 data2的总列数    colNum2 = sheet2.ncols    # xlwt准备生成一个新的文件的sheet=b的data1    write_workbook = xlwt.Workbook()    write_sheet = write_workbook.add_sheet("b的data1", 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/b.xlsx")

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123131.html

相关文章

  • 不严谨的不同语言下大 Excel 文件写入的性能比较

    摘要:测试内容使用不同的语言及其版本,测试各自完成包含行列单元格的文件的生成,对比其各自耗费时间,次重复执行取其平均值后进行横向比较。 背景 去年因为线上系统需要导出大量数据(大概是 11 万行)到 Excel,代码是 Python 2.7 写的,除去数据库查询耗时,整个的 Excel 文件生成也还要耗费几十秒的时间,这听起来真是一个非常夸张的事情。后来为其更换了号称性能表现最好的 pyex...

    keithxiaoy 评论0 收藏0
  • 一文带你斩杀Python之Numpy☀️Pandas全部操作【全网最详细】❗❗❗

    目录Numpy简介Numpy操作集合1、不同维度数据的表示1.1 一维数据的表示1.2 二维数据的表示1.3 三维数据的表示2、 为什么要使用Numpy2.1、Numpy的ndarray具有广播功能2.2 Numpy数组的性能比Python原生数据类型高3 ndarray的属性和基本操作3.1 ndarray的基本属性3.2 ndarray元素类型3.3 创建ndarray的方式3.4 ndarr...

    asoren 评论0 收藏0
  • Python爬虫_爬取豆瓣阅读提供方列表并写入excel文件

    摘要:爬取豆瓣阅读提供方代码中会有详细的注释关于也是在看教程和书以及视频学习,纯种小白哈士奇的那种用到的库爬虫库正则模块写模块时间模块库伪装浏览器的固定写法也可以再加加个代理,也可以不加直接使用自己的地址代理西刺代理通过正则获取内容菜鸟 爬取豆瓣阅读提供方 代码中会有详细的注释 关于python也是在看教程和书以及视频学习,纯种小白(哈士奇的那种) 用到的库 urllib     -> ...

    fish 评论0 收藏0
  • java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) exce

    摘要:消费之后,多线程处理文件导出,生成文件后上传到等文件服务器。前端直接查询并且展现对应的任务执行列表,去等文件服务器下载文件即可。这客户体验不友好,而且网络传输,系统占用多种问题。拓展阅读导出最佳实践框架 产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件。 需求分析 对于 excel 导出,是一个很常见的需求。 最常见的解决方案就是使用 poi 直接同步导出一个 exc...

    K_B_Z 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<