2015-05-18 3 views
0

Вот выход на code-Openpyxl - получение ошибка - нет данных возвращается

wb = load_workbook(filename, use_iterators=True) 
    ws = wb.worksheets[0] 

for row in range(1, 4): 
    for col in range(32, 35): 
     print 'Value = ', ws.cell(column=col, row=row, value="%s" % get_column_letter(col)) 

программы является следующим образом-

Value = <Cell Data.AF1> 
    Value = <Cell Data.AG1> 
    Value = <Cell Data.AH1> 
    Value = <Cell Data.AF2> 

Как получить правильное значение?

Я попробовал следующее

вещей:
print 'Value = ', ws.cell(row = 1, column = 1).value 

O/P is Value = None 

print 'Value = ', ws['A1'].value 

O/P is Value = ExportDate (This is the correct value) 
+0

Hm мне кажется, что у вас есть правильное значение уже. Так можно было бы сделать что-то вроде 'for col in ['A', 'B', 'C']', а затем 'ws [" {} {} ". Format. (Col, row)]. Value', и это будет быть великим. Чтобы получить все прописные буквы, вы можете сделать это: 'import string; string.ascii_uppercase'. –

+0

Спасибо, Александр, но не могли бы вы объяснить мне подробно. Я хочу, чтобы программа автоматически перебирать столбцов от 32 до макс столбцов – prj

+0

время (all_cols <(ws.get_highest_column() - 3)): Colt = 0 COLD = 0 Colt = 32 ColD = Colt + 1 cell_name_Target = ws.cell (row = 1, column = ColT) .value #Get Целевое имя cell_name_Dis = ws.cell (row = 1, column = ColD) .value – prj

ответ

0

ws.cell() всегда возвращает объект Cell, который является то, что вы видите в инструкции печати. Свойство .value возвращает значение ячейки. ws.get_squared_range() позволит вам получить диапазон ячеек с листа. Все это описано в документации.

+0

Спасибо, Чарли Кларк. Я изменил на cell_name_Target = ws (row = 1, column = ColT) .value #Get Целевое имя Но это возвращает мне ошибку - TypeError: Объект IterableWorksheet не является вызываемым – prj

+0

Какую версию openpyxl и python вы используете? – prj

+0

Прочитайте учебник в документации. Просто попробуй что-то не получится. Эти методы не изменились с версии 2.0 –

0

я мог бы быть недопонимание вашей проблемы, но я думаю, что это то, что вы хотите:

1) Не используйте use_iterators. Я думаю, что это часть проблемы. Просто сделайте это:

wb = load_workbook(filename) 
ws = wb.worksheets[0] 

2) Если вы хотите получить значение, то вам нужно попросить его:

for row in range(1, 4): 
    for col in range(32, 35): 
     print 'Value = ', ws.cell(column=col, row=row).value 
+0

Спасибо David. Проблема use_iterators была проблемой – prj

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