Значение ячейки файла openpyxl xlsx = нет

Я хочу прочитать файл xlsx с помощью openpyxl. Вот типичный код, который я использую:

import openpyxl

wb = openpyxl.load_workbook("example.xlsx")
sh = wb.get_sheet_by_name(name="Sheet3") or wb.get_sheet_by_name(name="Section3")
for rownum in range(1, sh.get_highest_row()):
    print str(sh.cell(row=rownum, column=1).value)

В этом примере я могу найти значения из 1-го столбца. Проблема в том, что у меня есть данные во втором столбце и других столбцах, но на выходе я получил None....

Любая помощь будет оценена.


person user2205614    schedule 20.09.2013    source источник
comment
Я никогда не работал с python, но если вам нужны данные из других столбцов, разве вы не должны увеличивать значение column в цикле, используя переменную, как вы делаете для строки?   -  person Siddharth Rout    schedule 20.09.2013
comment
Я знаю, это просто для тестирования, столбец = 1 работает, а когда я тестирую столбец = 2, нет, ни столбец = 3, ни 4 ... Только какой-то столбец что-то возвращает. понятия не имею, почему в каждом столбце есть данные.   -  person user2205614    schedule 20.09.2013
comment
Можете ли вы отладить и проверить, каково значение sh.get_highest_row()   -  person Siddharth Rout    schedule 20.09.2013
comment
У меня есть правильное количество строк. если я печатаю rownum, он идет до последнего, в excel у меня есть 11500 строк, и вывод останавливается на этом числе.   -  person user2205614    schedule 20.09.2013
comment
В VBA диапазон будет похож на Range("A1:A" & lastrow). В питоне range(1, sh.get_highest_row()) изображает что-то подобное?   -  person Siddharth Rout    schedule 20.09.2013
comment
Использование: ячейка (coodinate = 'A15') или ячейка (строка = 15, столбец = 1). Таким образом, использование диапазона дает переменную, которая увеличивается, здесь номер строки до конца.   -  person user2205614    schedule 20.09.2013
comment
В любом случае, если я напечатаю sh.cell(row=155, column=2).value, я получу None, вместо этого у меня должно быть что-то   -  person user2205614    schedule 20.09.2013
comment
До тех пор, пока кто-нибудь из Python не придет на помощь.. давайте попробуем это сделать :) Что оценивает range(1, sh.get_highest_row())?   -  person Siddharth Rout    schedule 20.09.2013
comment
Да, он возвращает максимальный индекс строки, содержащий данные, в любом случае спасибо   -  person user2205614    schedule 20.09.2013
comment
Вопрос Qucik .. в отличие от vba-excel, первый столбец начинается с 0 в python? Если да, то вы имеете в виду правую колонку?   -  person Siddharth Rout    schedule 20.09.2013
comment
Да, он также начинается с 0. У меня такая же проблема, если я использую, например: print sh.cell(coordinate='i20').value   -  person user2205614    schedule 20.09.2013


Ответы (1)


Работает с библиотекой xlrd. Файл excel создается с помощью библиотеки java. Это выглядит проблематично при таком способе создания. Откройте его с помощью Excel 2013 и сохраните как новый файл xlsx, который также работает лучше.

person user2205614    schedule 24.09.2013