import openpyxl
from openpyxl.styles import? PatternFill
workbook = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\user_info_format1.xlsx')? # 加載已經(jīng)存在的excel
name_list = workbook.sheetnames #獲取所有的sheet表名
worksheet = workbook[name_list[0]]
fill = PatternFill("solid", fgColor="FF0000") #設(shè)置填充樣式
m_list = worksheet.merged_cells? # 合并單元格的位置信息烹困,可迭代對(duì)象(單個(gè)是一個(gè)'openpyxl.worksheet.cell_range.CellRange'對(duì)象)盖溺,print后就是excel坐標(biāo)信息
cr = []
for m_area in m_list:
? ? # 合并單元格的起始行坐標(biāo)策精、終止行坐標(biāo)疏日。芭毙。诽俯。敲才。晦墙,
? ? r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col
? ? # 縱向合并單元格的位置信息提取出
? ? if r2 - r1 > 0 or c2 - c1 > 0:
? ? ? ? cr.append((r1, r2, c1, c2))
? ? ? ? print('符合條件%s' % str(m_area))
#print(cr)
# 這里注意需要把合并單元格的信息提取出再拆分
for r in cr:
? ? worksheet.unmerge_cells(start_row=r[0], end_row=r[1],
? ? ? ? ? ? ? ? ? ? ? ? ? ? start_column=r[2], end_column=r[3])
? ? if r[3]-r[2]==0:? #單獨(dú)列合并
? ? ? ? for row? in? (range(r[0], r[1]+1)):
? ? ? ? ? ? worksheet.cell(row=row, column=r[3], value=worksheet.cell(r[0], r[2]).value)
? ? ? ? ? ? worksheet.cell(row, column=r[3]).fill = fill #將對(duì)應(yīng)拆分單元格填充顏色
? ? elif? r[1]-r[0]==0 :? #單獨(dú)行合并
? ? ? ? for column? in? (range(r[2], r[3]+1)):
? ? ? ? ? ? worksheet.cell(row=r[1], column=column, value=worksheet.cell(r[0], r[2]).value)
? ? ? ? ? ? worksheet.cell(row=r[0], column=column).fill = fill #將對(duì)應(yīng)拆分單元格填充顏色
? ? else :? #多行孤钦、列合并
? ? ? ? for row? in? (range(r[0], r[1]+1)):?
? ? ? ? ? ? for column? in? (range(r[2], r[3]+1)):
? ? ? ? ? ? ? ? worksheet.cell(row, column, value=worksheet.cell(r[0], r[2]).value)
? ? ? ? ? ? ? ? worksheet.cell(row, column).fill=fill #將對(duì)應(yīng)拆分單元格填充顏色
workbook.save(r'C:\Users\Administrator\Desktop\data25.xlsx') #另存為新表