# coding:utf-8 import xlrd class ExcelUtil(): def __init__(self, excelPath, sheetName="Sheet1"): self.data = xlrd.open_workbook(excelPath) self.table = self.data.sheet_by_name(sheetName) # 获取第一行作为key值 self.keys = self.table.row_values(0) # 获取总行数 self.rowNum = self.table.nrows # 获取总列数 self.colNum = self.table.ncols def dict_data(self): if self.rowNum <= 1: print("总行数小于1") else: r = [] j = 1 for i in list(range(self.rowNum-1)): s = {} # 从第二行取对应values值 #s['rowNum'] = i+2 values = self.table.row_values(j) for x in list(range(self.colNum)): s[self.keys[x]] = values[x] r.append(s) j += 1 return r if __name__ == "__main__": filepath = r"C:UsersAdministratorDesktop测试文件雅琪信用卡测试数据 est_data.xlsx" sheetName = "Sheet1" data = ExcelUtil(filepath, sheetName) print(data.dict_data())
运行结果:
[{'供应商名称': '艾麟222', '渠道码': 452369.0, '所属银行': '浦发银行'}]
注:这里的渠道码应该是一个字符串,xlrd读取时把数据变成了float,需要单独处理。
转:
方式一:
data = xlrd.open_workbook(r"C:UsersAdministratorDesktop测试文件雅琪信用卡测试数据 est_data.xlsx") #打开excel table = data.sheet_by_name("Sheet1") #读sheet nrows = table.nrows cols = table.ncols nos = [] for i in range(1,nrows): #指定从1开始,到最后一列,跳过表头 for j in range(cols): ctype = table.cell(i , j).ctype #判断python读取的返回类型 0 --empty,1 --string, 2 --number(都是浮点), 3 --date, 4 --boolean, 5 --error no = table.cell(i, j).value #获取单元格的值 if ctype == 2 : no = str(int(no)) #将浮点转换成整数再转换成字符串 nos.append(no) print(nos)
方式二:
把excel单元格格式设置为以文本格式显示数字