2016-10-05 12 views
1

с версией 2.3.5 openpyxl этого код работает:итерации по всем строкам/столбцам openpyxl больше не работает с новой версией> 2.3.5

from openpyxl import load_workbook 

excel_file = load_workbook(excel_file_path,read_only=True) 

sheet = excel_file["Sheet1"] 

    mylist = [] 
    for row in sheet: 
     for cell in row: 
      mylist.append((cell.value, cell.row, cell.column)) 

я сделал это так, что я могу обработать мой большой Ехчел Быстрее. но с новой версией с версии 2.4.x это больше не работает, первый «for-loop» сразу же прерывается, что изменилось в версии? или как я могу сделать то же самое с последней версией openpyxl?

+0

Что значит «перерывы»? Пожалуйста, предоставьте полный обзор. –

+0

Я имею в виду, что он даже не выполняет первый цикл, он просто перескакивает на следующей строке кода, первый «for-loop» даже не введен. – friggler

+0

Это происходит с новой версией, когда я устанавливаю 'read_only' в' True'. В противном случае все в порядке. – Abdou

ответ

0

Это похоже на то, что у вас есть параметр read_only, установленный на True при загрузке вашей книги. Мой обходной путь был использовать атрибут sheetmax_row создать range значений Переберите в качестве индексов строки:

from openpyxl import load_workbook 

excel_file = load_workbook(excel_file_path,read_only=True) 
sheet = excel_file["Sheet1"] 

mylist = [] 
row_num = sheet.max_row 

for row_index in range(1,row_num): 
    for cell in sheet[row_index]: 
     mylist.append((cell.value, cell.row, cell.column)) 

Надеюсь @CharlieClark может пролить некоторый свет на это. Но пока я надеюсь, что это будет полезно.

+0

спасибо ive попробовал это, это действительно обходной путь, который работает с новой версией, но было бы неплохо узнать, что изменилось и почему код выше не работает с последней версией – friggler

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

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