在日常测试开发中,偶尔会遇到Excel的相关操作,其中合并Excel单元格是一个相对来说比较麻烦的操作,本文主要分享如何通过
Python实现Excel中多列单元格的合并。Excel 示例
如下"软件测试开发技术栈.xlsx"文件,图中"今天又是美好一天"Sheet页 的"A、B、C、D"四列均存在重复的数据,为了提高浏览体验,通常我们需要进行单元格的合并操作。
Python 源码
直奔主题,分享下 Python源码,主要通过 openpyxl 实现单元格的合并,代码如下 :
<code> from openpyxl import load_workbook def merge_excel(sheet_name, merge_col, file_path='demo.xlsx'): """ 支持合并Excel多列数据 """ def merge_cells(ws, target_list, start_row, col): """ ws: 工作表 target_list: 目标列数据,即含有重复数据的列表 start_row: 起始行,即工作表中开始比对数据的行(需要将标题除开) col: 目标列索引 ''' """start
=0
end
=0
reference
= target_list[0
]for
iin
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)) wb = load_workbook(file_path)if
sheet_namein
wb.sheetnames: ws = wb[sheet_name] col_index =list
(merge_col)for
index
in
col_index: _value_list = []for
row
in
range
(1
, ws.max_row +1
): _value = ws[index
+str
(row
)].value _value_list.append(_value) start_row =1
merge_cells(ws, _value_list, start_row,index
) wb.save(file_path)if
__name__ =='__main__'
: merge_excel("今天又是美好的一天"
,"ABCD"
,"软件测试开发技术栈.xlsx"
) /<code>
效果示例
通过运行上述代码,我们合并"今天又是美好一天"Sheet页 的"A、B、C、D"四列数据,实际合并效果如下:
专栏
每天八分钟Python基础编程
69.9币
120人已购