2

我是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:/Users/KVenkataraja/PycharmProjects/Python Tutorials/readexel.py" C:/Users/KVenkataraja/PycharmProjects/Python Tutorials/ readexel.py:9:DeprecationWarning:调用已弃用的函数 get_sheet_names(使用 wb.sheetnames)。sheet_names = wb.get_sheet_names() C:/Users/KVenkataraja/PycharmProjects/Python Tutorials/readexel.py:10: DeprecationWarning: Call to deprecated function get_sheet_by_name (使用 wb[sheetname])。sheet = wb.get_sheet_by_name(sheet_names[sheet_ind]) Traceback(最近一次调用最后):文件“C:/Users/KVenkataraja/PycharmProjects/Python Tutorials/readexel.py”,第 18 行,在 cur_row = list(sheet.rows[一世])

TypeError:“生成器”对象不可下标

进程以退出代码 1 结束

4

1 回答 1

3

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)
于 2018-06-26T13:31:36.567 回答