python 从excel获取合并单元格

 
  

 

# -*- coding: utf-8 -*-
import xlrd
import os

#获取文件绝对路径
file=os.path.join(os.path.dirname(os.getcwd()),'data','合并单元格.xlsx')

#获取工作表格sheet
wbook=xlrd.open_workbook(file)
sheet=wbook.sheet_by_index(0)

#单元格的数据查询:(row,row_range,col,col_range):row -【row_range - 1】合并
merge=sheet.merged_cells

#获取测试数据表头作为字典keys
keys=sheet.row_values(3)

#将合并的、非首行的单元格,赋值相同的数据
datas=[]
for r in range(4,sheet.nrows):
    li = []
    for c in range(sheet.ncols):
        # 读取每个单元格里的数据,合并单元格只有单元格内的第一行第一列有数据,其余空间都为空
        cell_value = sheet.row_values(r)[c]
        # 判断空数据是否在合并单元格的坐标中,获取第一行单元格的数据
        if cell_value is None or cell_value == '':
            for (rlow, rhigh, clow, chigh) in merge:
                if rlow <= r < rhigh:
                    if clow <= c < chigh:
                        cell_value = sheet.cell_value(rlow, clow)

        #将单元格的数据,赋值给非合并单元格首行的单元格
        li.append(cell_value)
        # 将表头和数据组装在一起,返回字典格式
        data = dict(zip(keys, li))
    #将当前循环的数据添加到data,获取整个表格的数据
    datas.append(data)

print(datas)

你可能感兴趣的:(学习中)