需求背景:#
工作中将数据保存xlsx文件之后,里面每一列中有很多重复的看着很不美观,需要将每一列中的相同值合并起来,是表格看起来美观简洁#
处理前#

处理后#

直接上代码(内涵注释讲解)#
"""
-*- coding: utf-8 -*-
@Time : 2022/12/6 10:10
@Author : Logan
@File : xlxs_test.py
@Comment : 合并单元格
"""
import os
import openpyxl
def merge_xlsx(file):
'''
合并单元格
:param file: 需要合并的文件
:return:
'''
wb = openpyxl.load_workbook(os.path.join(path, file))
sheet = wb["Sheet1"]
print(sheet.max_row)
print(sheet.max_column)
column_list = []
for i in range(1, sheet.max_column + 1):
value = sheet.cell(row=2, column=i)
column_list.append(value.coordinate[0])
print(column_list)
for letter in columnList:
sumList = []
print(sumList)
print(letter)
for i in range(2, sheet.max_row + 1):
value = sheet.cell(row=i, column=1).value
if value:
sumList.append(value)
else:
sumList.append('')
print(sumList)
prow = 0
frow = 0
flag = sumList[0]
for i in range(len(sumList)):
if sumList[i] != flag:
flag = sumList[i]
frow = i - 1
if frow >= prow:
sheet.merge_cells(f"{letter}{prow + 2}:{letter}{frow + 2}")
prow = frow + 1
if i == len(sumList) - 1:
frow = i
sheet.merge_cells(f"{letter}{prow + 2}:{letter}{frow + 2}")
print(f'合并完成一列: {letter}')
wb.save(os.path.join(path, file))
print(f'操作完毕')
if __name__ == '__main__':
file_name = 'test_xlsx.xlsx'
path = os.getcwd()
print(os.path.join(path, file_name))
merge_xlsx(file=file_name)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)