Python实现同时合并Excel中多列单元格,附源码

在日常测试开发中,偶尔会遇到Excel的相关操作,其中合并Excel单元格是一个相对来说比较麻烦的操作,本文主要分享如何通过

Python实现Excel中多列单元格的合并

Excel 示例

如下"软件测试开发技术栈.xlsx"文件,图中"今天又是美好一天"Sheet页 的"A、B、C、D"四列均存在重复的数据,为了提高浏览体验,通常我们需要进行单元格的合并操作。

Python实现同时合并Excel中多列单元格,附源码

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

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))    wb = load_workbook(file_path)        

if

sheet_name

in

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实现同时合并Excel中多列单元格,附源码

专栏

每天八分钟Python基础编程

作者:软件测试开发技术栈

69.9币

120人已购

查看


分享到:


相關文章: