我收到了一个错误:
NameError:name' sheet'没有定义。我想解析excel并打印内容。
我写的代码:
class ReadData():
def __init__(self, sheet_path):
self.book = xlrd.open_workbook(sheet_path)
self.sheet = self.book.sheet_by_index(1)
self.companies = []
def read(self):
for row_index in range(2, sheet.nrows):
rows = sheet.row_values(row_index)
print(rows)
x = ReadData('./data/excel1.xlsx')
x.read()
我真的无法理解为什么会出现这种错误。我应该添加一些东西来使用 init 吗?我该如何解决这个问题?
答案 0 :(得分:1)
您应该使用self.sheet
而不仅仅是sheet
。因此,将您的方法更新为
def read(self):
# ------------------------v
for row_index in range(2, self.sheet.nrows):
#---------v
rows = self.sheet.row_values(row_index)
print(rows)
答案 1 :(得分:1)
在读取功能中,没有定义纸张。你应该使用self.sheet.nrows
答案 2 :(得分:0)
试试这个
class ReadData():
def __init__(self, sheet_path):
self.book = xlrd.open_workbook(sheet_path)
self.sheet = self.book.sheet_by_index(1)
self.companies = []
def read(self):
for row_index in range(2, self.sheet.nrows):
rows = self.sheet.row_values(row_index)
print(rows)
x = ReadData('./data/excel1.xlsx')
x.read()
我在第8行self.
之前添加了sheet
答案 3 :(得分:0)
错误本身表示它无法在sheet
方法中找到属性read()
。您在两个地方使用了sheet
:
1:在for
循环中range
2:在for
循环的第一行。
如果要在python
中的任何方法中使用任何属性,那么它只能是类变量或局部变量或实例变量或某些导入的属性。
class variable
或instance variable
可以通过self
访问。
在您的情况下,sheet
是instance variable
,因此只能使用self
进行访问。
因此,如果您将sheet
的这两次出现更改为self.sheet
,那么就可以了。
这是您更正后的代码
class ReadData(object):
def __init__(self, sheet_path):
self.book = xlrd.open_workbook(sheet_path)
self.sheet = self.book.sheet_by_index(1)
self.companies = []
def read(self):
for row_index in range(2, self.sheet.nrows):
rows = self.sheet.row_values(row_index)
print(rows)
x = ReadData('./data/excel1.xlsx')
x.read()