python 处理合并单元格

ython 读取excel合并单元格  并将合并单元格的数据填充    代码如下:

#找出合并单元格的数据  full_file_path指传入的表格的路径
    def enter(self,full_file_path):
        try:
            data = xlrd.open_workbook(full_file_path);
            table = data.sheets()[0]

 '''获取合并单元格的数据[(0,5,0,1),(6,10,0,1)]  格式为列表下多个元组 一个元组代表一个起合并单元格 

   (a,b,c,d)    a为起始行 b为结束行  c为起始列 d为结束列  左闭右开原则'''           

            lists=table.merged_cells;  

        except Exception as ex:
            print(ex)    
        mergeJson={};   #合并单元格与该单元格的数据  
        nrows = table.nrows #行数
        #找出合并单元格  并找出合并单元格的值  以键值的方式存储   元组为键   该合并单元格的值为值
        for i in range(1,nrows):
            rowValues= table.row_values(i) #某一行数据   
            event = {} 
            for j in range(0,len(rowValues)):  #某一行中列的数据
                for mer in lists:   #遍历合并单元格的列表   mer为元组
                    if i>=mer[0] and i<mer[1] and j>=mer[2] and j<mer[3] :  #判断是否是合并行
                        #处理合并行
                        if rowValues[j] != "" :    #不为空的合并值
                            mergeJson[mer]=rowValues[j];


''' 将合并的单元格和数据传过来  处理数据  此处的处理逻辑是 将合并的单元格的位置确定 判断读取的当前单元格在不在合并单元格内 在的话 就把为空的单元格的值填充为合并单元格的值'''         
    def dealData(self,data,mergeJson):
        bulk = [] 
        table = data.sheets()[0]
        lists=table.merged_cells;
        nrows = table.nrows #行数    
        #解析数据
        try :
            for i in range(1,nrows):
                rowValues= table.row_values(i) #某一行数据   
                event = {} 
                for j in range(0,len(rowValues)):  #某一行中列的数据
                    if mergeJson:
                        for tuplerc in mergeJson:   #data为字典  key 为元组   value  为该合并单元格的值
                            if i>=tuplerc[0] and i<tuplerc[1] and j>=tuplerc[2] and j<tuplerc[3] :  #判断是否是合并行
                                #处理合并行
                                if rowValues[j] == "" :    #不为空的合并值
                                    rowValues[j]= mergeJson[tuplerc];
                        else :
                            event[fields_names[j]]=value;
                    else :
                        event[fields_names[j]] =rowValues[j]   
                bulk.append(event)
        except Exception as ex:
            print(ex)       
        print (bulk);

       

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值