一 、获取表格内容
获取文件内容:一个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]]