在日常測試開發中,偶爾會遇到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人已購