2012-06-21 4 views
1

У меня есть следующий алгоритм для синтаксического анализа столбца целочисленных значений:Синтаксической колонку с использованием openpyxl

def getddr(ws): 
address = [] 
col_name = 'C' 
start_row = 4 
end_row = ws.get_highest_row()+1 

range_expr = "{col}{start_row}:{col}{end_row}".format(col=col_name, start_row=start_row, end_row=end_row) 

for row in ws.iter_rows(range_string=range_expr): 
    print row 
    raw_input("enter to continue") 
    cell = row[0] 
    if str(cell.value).isdigit: 
     address.append(cell.value) 
    else: 
     continue 

return address 

Это происходит сбой в cell = row[0] говоря «IndexError: индекс кортежа из диапазона», и я не знаю, что это значит , Я попробовал распечатать строку, чтобы увидеть, что она содержала, но все, что она дает мне, - это пустой набор круглых скобок. Кто-нибудь знает, что мне не хватает?

ответ

3

Это не так просто сказать, в чем проблема, потому что нет входных данных, которые вы пытаетесь обработать.

Но я могу объяснить, в чем причина ошибки, которую вы получили, и в каком направлении вы должны идти. Список row содержит 0 элементов (row = []), из-за чего вы не можете сказать row[0] - нет строки [0]. Первое, что вы должны изменить это проверить, как долго ваш список, и когда, если он достаточно долго делать другие вещи:

for row in ws.iter_rows(range_string=range_expr): 
    print row 
    raw_input("enter to continue") 
    if len(row) > 0: 
     cell = row[0] 
     if str(cell.value).isdigit: 
     address.append(cell.value) 
     else: 
     continue 

Это первый шаг, который вы должны делать в любом случае.

+0

Что неудобно, но после этого он всегда печатает пустые парсеры для каждой строки. Лист excel, который я читаю, имеет 106 строк данных, и он выводит 106 пустых наборов символов для каждой строки. Есть ли причина, по которой программа будет читать файл, но не видит какие-либо данные в файле? – zakparks31191