1 问题
TypeError: ExcelUtil() takes no arguments
自己写的方法ExcelUtil(),没有参数传入。
2 原因
低级错误
def __int__(self)
应该改为def __init__(self)
,def __init__(self)
为构造方法不可随意改变。少打了一个i
。
3 总结
一直以为是路径问题,因为def __init__(self,excelPath,sheetName = "Sheet1"):
,excelPath参数是excel文件的目录。把自己的报错复制到百度,看了人家的经验,才发现少打了一个字母i
。
最后,excel中的数据转换为列表字典的形的方法,如下代码:
import xlrd
class ExcelUtil():
# __init__ 构造方法
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.total_row = self.table.nrows
# 获取总列数
self.total_col = self.table.ncols
# 将数据转化为列表字典的形式
def dic_data(self):
if self.total_row <= 1:
print("总行数小于1")
else:
r = [] #定义一个空列表
j = 1
for i in range(self.total_row-1): #按行读取
s = {}# 定义一个空字典
# 从第二行取values值
values =self.table.row_values(j)
for x in range(self.total_col): #在一行中读取列数据
s[self.keys[x]] = values[x] #通过键找到值
r.append(s) #将字典添加到列表中
j = j + 1
return r
if __name__ == '__main__':
filepath = r"./Data/abc.xlsx"
# 实例化类,创建对象data1
data1 = ExcelUtil(filepath)
# 对象data1调用dic_data()方法
data = data1.dic_data()
print(data)
# for i in data:
# print(i)