excel中列相同的单元格合并一个单元格

#定义合并单元格的函数

def Merge_cells(ws,target_list,start_row,col):

    '''

    ws: 是需要操作的工作表

    target_list: 是目标列表,即含有重复数据的列表

    start_row: 是开始行,即工作表中开始比对数据的行(需要将标题除开)

    col: 是需要处理数据的列

    '''

    start = 0 #开始行计数,初试值为0,对应列表中的第1个元素的位置0

    end = 0 #结束行计数,初试值为0,对应列表中的第1个元素的位置0

    reference = target_list[0] #设定基准,以列表中的第一个字符串开始

    for i in range(len(target_list)): #遍历列表

        if target_list[i] != reference: #开始比对,如果内容不同执行如下

            reference = target_list[i] #基准变成列表中下一个字符串

            end = i - 1 #列计数器

            ws.merge_cells(col + str(start + start_row) + ":"+col + str(end + start_row))

            start = end + 1

        if i == len(target_list) - 1: #遍历到最后一行,按如下操作

            end = i

            ws.merge_cells(col + str(start + start_row) + ":"+ col + str(end + start_row))

# 获取Excel表格中的数据

from openpyxl import load_workbook  # 用于读取Excel中的信息



wb = load_workbook('x.xlsx')

sheet_names = wb.get_sheet_names()

for sheet_name in sheet_names:  # 遍历每个工作表,抓取数据,并根据要求合并单元格

    ws = wb[sheet_name]

    a_list = []  

    b_list = []  

    c_list = [] 

    d_list = [] 


    for row in range(1, ws.max_row +1):

        a = ws['A' + str(row)].value

        b = ws['B' + str(row)].value

        c = ws['C' + str(row)].value

        d = ws['D' + str(row)].value

        a_list.append(a)

        b_list.append(b)

        c_list.append(c)

        d_list.append(d)


    # 调用以上定义的合并单元格函数`Merge_cells`做单元格合并操作

    start_row = 1  # 开始行是第六行

    Merge_cells(ws, a_list, start_row, "A")  # "B" - 客户名称是在B列

    Merge_cells(ws, b_list, start_row, "B")  # "C" - 产品编码是在C列



    Merge_cells(ws, c_list, start_row, "C")  # "B" - 客户名称是在B列

    Merge_cells(ws, d_list, start_row, "D")  # "C" - 产品编码是在C列

wb.save("产品清单-合并单元.xlsx")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值