for file in files:
book=xlrd.open_workbook(file)
first_sheet = book.sheet_by_index(0)
i=0
j=0
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
val=first_sheet.cell(14+i,1+j)
print (val, i)
i=i+1
i=0
j=j+1
读取列的n行后,它表示列表索引超出范围。假设,我没有行数,所以选择while循环。我可以在excel vba中运行,但这里有一些问题 错误追溯
Traceback (most recent call last):
File "C:\Users\User_2\Desktop\Vijay\FAST\KarBarge\Results py-spreadsheets.py", line 28, in <module>
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 399, in cell
self._cell_types[rowx][colx],
IndexError: list index out of range
答案 0 :(得分:0)
如果您知道您遇到的异常,并且只是想忽略它,那么try: except:
就是您的选择。
i=0
j=0
try:
while first_sheet.cell(14,1+j).value != xlrd.empty_cell.value:
try:
while first_sheet.cell(14+i,1+j).value != xlrd.empty_cell.value:
val=first_sheet.cell(14+i,1+j)
print (val, i)
i=i+1
except IndexError:
# ignore error from iterating in i
pass
except IndexError:
# ignore error from iterating in j
pass
else:
i=0
j=j+1
答案 1 :(得分:0)
您获得List index out of range
的原因正如您所说,您正在尝试访问电子表格中不存在的单元格。只需测试它是否为空就会导致这种情况。
xlrd
可以使用以下方式告诉您可用行数和列数:
print(first_sheet.nrows, first_sheet.ncols)
所以你的循环需要保持在这些范围内。
您的代码似乎试图按列显示电子表格的内容。作为替代方法,您可以尝试以下方法:
import xlrd
workbook = xlrd.open_workbook(r"input.xlsx")
sheet = workbook.sheet_by_index(0)
for colx in range(1, sheet.ncols):
print(sheet.col_values(colx, start_rowx=14))
这会将每列打印为从行14
开始的值列表。