excel解合并单元格

这段代码主要实现了读取Excel文件,获取所有sheet名,并针对指定sheet进行操作。它遍历并拆分了所有合并的单元格,并根据设定的红色填充样式,对拆分后的单元格进行填充。同时,对于不同类型的合并单元格(横向、纵向或多行多列),分别进行了处理,确保每个拆分后的单元格都有相同的内容和填充颜色。最后,保存了处理后的Excel文件。
摘要由CSDN通过智能技术生成
import openpyxl
from openpyxl.styles import PatternFill

workbook = openpyxl.load_workbook(r'c\Users\水务局注释.xlsx')#加载已经存在的表
name_list = workbook.sheetnames#获取所有的sheet名
worksheet= workbook[name_list[1]]
fill = PatternFill("solid",fgColor="FF0000")#设置填充样式
m_list= worksheet.merged_cells #合并单元格的位置信息,可送代对象(单个是一个"openpyxl.worksheet.cell—range.CellRange'对象) , print后就是excel坐标信息
cr =[]

for m_area in m_list: #合并单元格的起始行坐标、终止行坐标。。。。
    rl, r2, cl, 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, cl, c2)) 
        print(符合条件%s' % str(m_area)

#这里注意需要把给并单元格的信息提取出再拆分
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: #单独列合并
        for row in (range([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]).fil1=fil1#将对应拆分单元格填充颜色
    elif r[1]-r[0]=0 : #独有合共
        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],colum=column).fill=fill #将对应拆分单元格填充颜色 
    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#将对应苏分单元格填在颜色 
workbook.save (t' c: VUsers Administrator Desktop)水务局注释解合并,xlsx')#另存为新表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值