xlrd单元格值返回错误

我有一个电子表格,结构如下(数据从列B开始。列A是空的)

ABCD Name city salary Jennifer Boston 100 Andrew Pittsburgh 1000 Sarah LA 100 Grand Total 1200 

在将数据加载到数据库之前,我需要将总数过滤掉。

为此,我正在阅读总计为:

 import xlrd import pymssql #open workbook book = xlrd.open_workbook("C:\_Workspace\Test\MM.xls") print( "The number of worksheets is", book.nsheets) #for each row in xls file loop #skip last row last_row = curr_sheet.nrows print(last_row) print(curr_sheet.ncols) skip_val = curr_sheet.cell(last_row,1).value print( skip_val) if skip_val == "Grand Total": last_row = last_row - 1 else: last_row = last_row for rx in range(last_row): print( curr_sheet.row(rx)) 

但是,我收到以下错误:

  Traceback (most recent call last): File "C:\_Workspace\Test\xldb.py", line 26, in <module> skip_val = curr_sheet.cell(last_row,1).value File "c:\Python34\lib\site-packages\xlrd-0.9.3- >py3.4.egg\xlrd\sheet.py", line 399, in cell self._cell_types[rowx][colx], IndexError: list index out of range 

我无法弄清楚上面的语法有什么问题。 希望这里的某个人能够发现为什么抛出错误。

非常感谢,蜜蜂

我认为你的问题不是基于零的索引。 last_row = curr_sheet.nrows返回工作表中的行数,所以访问最后一行需要:

 skip_val = curr_sheet.cell_value(last_row-1, 1) 

Python中的第一个元素被索引为0,因此列表mylist的第一个元素将是mylist[0] 。 最后一个元素不是mylist[len(mylist)] ,而是mylist[len(mylist)-1] ,应该写为mylist[-1] 。 你可以这样写:

 skip_val = curr_sheet.cell_value(-1, 1)