美文网首页officePython
高效办公7——Python批量转换Excel同维度数据单一单元格

高效办公7——Python批量转换Excel同维度数据单一单元格

作者: 模仿打酱油 | 来源:发表于2020-07-20 14:17 被阅读0次
    场景概述

    这个标题可能过于笼统,只因个人不知如何具体陈述。想要表达的内容如下:

    原数据data.xlsx中Sheet1工作表数据:


    1595172980(1).png

    需将原数据转换成下图效果,并保存到data.xlsx文件的Sheet2工作表中:


    1595185430(1).png
    对于这个需求,部分小伙伴会认为无需多此一举,直接Excel字符串连接就OK,如果对于小规模数据,那当然再简单不过,但遇到大规模数据,该方法就能派上用场了。当然,如果小伙伴有更好的方法,还望分享!
    需求准备

    先在data.xlsx文件中创建工作表Sheet2,否则会报错!!!

    工具准备

    openpyxl模块

    代码实现
    from openpyxl import load_workbook
    
    
    # 需要处理的文件
    file = r'C:/Users/SYH/Desktop/test/data.xlsx'
    wb = load_workbook(file)
    # 激活工作表'Sheet1'
    ws = wb['Sheet1']
    
    # 获取数据范围,即数据最大的行数和列数
    max_r = ws.max_row
    max_c = ws.max_column
    
    # 定义工作表
    ws_res = wb['Sheet2']
    
    # 创建表头
    ws_res['A1'] = '班级'
    ws_res['B1'] = '学生'
    
    r_num = 2
    c_num = 1
    
    str_data = []
    for r in range(2, max_r + 1):
        str_data.append(ws.cell(r, 2).value)
        if ws.cell(r, 1).value == ws.cell(r + 1, 1).value:
            ws_res.cell(row=c_num + 1, column=1, value=ws.cell(r, 1).value)
    
            ws_res.cell(row=c_num + 1, column=2, value='、'.join(str_data))
    
            r_num = r_num + 1
        else:
            ws_res.cell(row=c_num + 1, column=2, value='、'.join(str_data))  # 用顿号分隔
    
            c_num = c_num + 1
            r_num = 2
            str_data = []
            continue
    
    # 保存数据
    wb.save(file)
    
    
    

    执行代码,完成预期效果!


    1595225520(1).jpg

    相关文章

      网友评论

        本文标题:高效办公7——Python批量转换Excel同维度数据单一单元格

        本文链接:https://www.haomeiwen.com/subject/hzjjkktx.html