使用Python的openpyxl库合并Excel工作表中符合特定条件的单元格
解决方案
原代码错误点
worksheet.merge_cells(item:item+1)语法不符合openpyxl要求,merge_cells支持两种传参方式:传入范围字符串(如A7:B7),或传入start_row、start_col、end_row、end_col四个整型参数;且item为单元格坐标字符串,直接做item+1运算无法得到右侧单元格的坐标- 冗余逻辑:不需要单独收集所有符合条件的单元格坐标,遍历到符合条件的单元格时可直接完成合并操作
修正后可运行代码
from openpyxl import load_workbook wb = load_workbook('Test.xlsx') # 你原代码中定义的ws = wb.active未使用,直接删除即可 worksheet = wb['Example'] # 从第7行开始遍历所有行 for row in worksheet.iter_rows(min_row=7): for cell in row: if cell.value == 'Sample': # 直接通过单元格的行列属性定义合并范围,同一行仅列号+1即可 worksheet.merge_cells( start_row=cell.row, start_col=cell.column, end_row=cell.row, end_col=cell.column + 1 ) wb.save('merging.xlsx')
补充说明
- 合并单元格后默认保留左上角单元格的内容,也就是你匹配到的
Sample内容会正常保留,右侧相邻单元格的内容会被覆盖,符合Excel的常规合并逻辑 - 若某一行存在多个值为
Sample的单元格,代码会分别对每个符合条件的单元格执行和右侧单元格合并的操作,符合你的需求
内容的提问来源于stack exchange,提问作者Angel
相关产品推荐
相关产品推荐

