2015-06-17 1 views
1

У меня есть таблица с приведенными ниже структурами (данные начинаются с колонкой Б. Колонок А пусто)xlrd значение ячейки возвращает ошибку

A B   C   D 
    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 

Я не в состоянии выяснить, что неправильно с синтаксисом выше. Надеясь, что кто-то здесь может понять, почему он выбрасывает ошибку.

Спасибо большое заранее, Bee

ответ

1

Я думаю, ваша проблема не приходится с нуля индексе. 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) 
+0

Спасибо @ChrisP. Это была проблема. Сейчас работает как шарм. – Bee

 Смежные вопросы

  • Нет связанных вопросов^_^