您好我正在尝试从包含第2行到第5行的范围内的电子表格中读取数据,并且它遵循列顺序,但我一直收到错误,说列范围有问题可以帮助我吗? 代码看起来应该是这样的,而不是行,它应该是列:
for row in range(2, sheet.max_row + 1):
state = sheet['B' + str(row)].value
county = sheet['C' + str(row)].value
pop = sheet['D' + str(row)].value
我尝试过的代码是:
import openpyxl
wb = openpyxl.load_workbook('name of wb')
sheet = wb.get_sheet_by_name('Sheet1')
for col in range('G', sheet.max_column + 1):
state = sheet[1 + str(column)].value
county = sheet[2 + str(column)].value
pop = sheet[3 + str(column)].value
hospitals = sheet[4 + str(column)].value
universities = sheet[5 + str(column)].value
答案 0 :(得分:0)
我的猜测是你的代码“sheet.max_row + 1”是罪魁祸首。这将超出工作表列表的可索引范围。
答案 1 :(得分:0)
就我所见,问题在于“范围('G',sheet.max_column + 1)”。范围的参数通常应该是整数。 查看openpyxl utils模块中的几个方法:
column_index_from_string(str_col), get_column_letter(IDX)
对于您的示例,column_index_from_string('G')给出7.您还应该将单元格引用转换为excel样式,例如A1不是1A。
import openpyxl
wb = openpyxl.load_workbook('name of wb')
sheet = wb.get_sheet_by_name('Sheet1')
for col in range(openpyxl.utils.column_index_from_string('G'), sheet.max_column + 1):
state = sheet[openpyxl.utils.get_column_letter(col) + '1'].value
county = sheet[openpyxl.utils.get_column_letter(col) + '2'].value
pop = sheet[openpyxl.utils.get_column_letter(col) + '3'].value
hospitals = sheet[openpyxl.utils.get_column_letter(col) + '4'].value
universities = sheet[openpyxl.utils.get_column_letter(col) + '5'].value