python 从excel获取合并单元格

一 、获取表格内容

获取文件内容:一个list,内容为list格式的每行数据

    #file_path为文件绝对路径, num为sheet序号(从0算起)    
    def read_excel(self,file_path,num):

        #获取文件表格
        wbook=xlrd.open_workbook(file_path)
        sheet=wbook.sheet_by_index(num)

        #获取表格的行数
        rows=sheet.nrows

        #获取每行数据, 组成一个list
        data_list=[]
        for n in range(1,rows):
            values=sheet.row_values(n)
            data_list.append(values)
        return data_list

[['张三',1],['李四',2],['王二',3]] 

 

 二 、获取表格合并单元格内容

 

(1) 直接使用row_values获取内容,开始列返回合并单元格数据,其他列返回''。

wbook=xlrd.open_workbook(file_path)
sheet=wbook.sheet_by_index(num)

for n in range(0,sheet.nrows):
    values=sheet.row_values(n)
    data_list.append(values)
print(data_list)

[['门店', '楼栋', '房间号'], ['成都1店', '1单元', 1001.0], ['', '', 1002.0], ['', '2单元', 2001.0], ['', '', 2001.0]]

(2)使用merge,获取单元格位置,将合并单元格内容,赋值给每个单元格。

    def read_excel(self,file_path,num):
        """file_path为文件绝对路径, num为sheet序号(从0算起)"""
        #获取文件表格
        wbook=xlrd.open_workbook(file_path)
        sheet=wbook.sheet_by_index(num)

        #获取表格内容
        rows = sheet.nrows  #获取表格的行数
        data_list = []  # 获取每行数据, 组成一个list
        for n in range(0, rows):
            values = sheet.row_values(n)
            data_list.append(values)

        #处理合并单元格的单元格值为空
        merge = sheet.merged_cells #返回合并单元格的位置
        #无合并单元格:直接获取值
        if merge == []:
            return data_list
        #有合并单元格:将值赋予每个单元格
        else:
            for i in merge:
                #获取合并单元的具体位置
                start_row=i[0]
                end_row=i[1]
                start_column=i[2]
                end_column=i[3]
                value = sheet.cell(start_row,start_column)  #获取合并单元格的内容
                #将单元格值赋给其他单元格
                for r in range(start_row,end_row):
                    row_list=data_list[r]
                    for c in range(start_column,end_column):
                        row_list[c]=value
            return data_list

[['门店', '楼栋', '房间号'], [text:'成都1店', text:'1单元', 1001.0], [text:'成都1店', text:'1单元', 1002.0], [text:'成都1店', text:'2单元', 2001.0], [text:'成都1店', text:'2单元', 2001.0]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值