我有一个非常奇怪的问题.我正在尝试从excel文件中读取一些数据,但属性nrows的值不正确.虽然我的文件有很多行,但它只返回2.
我在pydev eclipse工作.我不知道究竟是什么问题;一切都很好.
当我尝试通过索引手动访问其他行时,但我得到了索引错误.
我感谢任何帮助.
如果它有帮助,那就是我的代码:
def get_data_form_excel(address):
wb = xlrd.open_workbook(address)
profile_data_list = []
for s in wb.sheets():
for row in range(s.nrows):
if row > 0:
values = []
for column in range(s.ncols):
values.append(str(s.cell(row, column).value))
profile_data_list.append(values)
print str(profile_data_list)
return profile_data_list
要确保您的文件没有损坏,请尝试使用其他文件;我怀疑xlrd是否有缺陷.
此外,我已经清理你的代码看起来更好一点.例如,if行> 0检查是不必要的,因为你可以在第一个位置迭代范围(1,sheet.nrows).
def get_data_form_excel(address):
# this returns a generator not a list; you can iterate over it as normal,
# but if you need a list, convert the return value to one using list()
for sheet in xlrd.open_workbook(address).sheets():
for row in range(1, sheet.nrows):
yield [str(sheet.cell(row, col).value) for col in range(sheet.ncols)]
要么
def get_data_form_excel(address):
# you can make this function also use a (lazily evaluated) generator instead
# of a list by changing the brackets to normal parentheses.
return [
[str(sheet.cell(row, col).value) for col in range(sheet.ncols)]
for sheet in xlrd.open_workbook(address).sheets()
for row in range(1, sheet.nrows)
]