我是python的新手,正努力学习。
我正在使用以下代码读取Excel电子表格,但出现以下错误。 谁能帮我解决这个问题?或代码有什么问题。
import openpyxl
import os
if not os.path.isfile('C:\Python\Python36\EBC_N_Bhatt_Anilkumar _Team - 06132018.xlsx'):
raise Exception('File does not exist.')
wb = openpyxl.load_workbook('C:\Python\Python36\EBC_N_Bhatt_Anilkumar _Team - 06132018.xlsx')
sheet_ind = 0
sheet_names = wb.get_sheet_names()
sheet = wb.get_sheet_by_name(sheet_names[sheet_ind])
r = sheet.max_row
c = sheet.max_column
start_row = 0
for i in range(start_row, r):
cur_row = list(sheet.rows[i])
print(cur_row)
“ C:\ Users \ KVenkataraja \ PycharmProjects \ Python Tutorials \ venv \ Scripts \ python.exe” “ C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py” C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py:9: DeprecationWarning:调用已弃用的函数get_sheet_names(使用 wb.sheetnames)。 sheet_names = wb.get_sheet_names() C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py:10: DeprecationWarning:调用已弃用的函数get_sheet_by_name(使用 wb [sheetname])。 sheet = wb.get_sheet_by_name(sheet_names [sheet_ind]) 追溯(最近一次通话):文件 “ C:/用户/ KVenkataraja / PycharmProjects / Python教程/readexel.py”, 第18行,在 cur_row = list(sheet.rows [i])
TypeError:“生成器”对象不可下标
以退出代码1完成的过程
答案 0 :(得分:2)
sheet.rows
可能是(如您的错误消息所暗示的)是行的生成器,这就是为什么它不能下标的原因。您应该遍历生成器sheet.rows
。
您可以并且应该按照以下代码片段进行迭代:
for row in sheet.rows:
cur_row = list(row)
print(cur_row)
或者如果您也想要索引,请使用enumerate
,
for index, row in enumerate(sheet.rows):
cur_row = list(row)
print(cur_row)
# print(index)