Как перебирать листы в книге, openpyxl

Я использовал модуль openpyxl для обработки некоторых файлов .xlsx. Я пытался понять, как перебирать листы в книге. Я не уверен, что смогу понять это. Я пробовал два кода ниже, оба возвращают пустые результаты. В моем файле .xlsx около 20 листов, так что что-то должно вернуться.

Единственное, что я не смог найти в Интернете, - это как преобразовать книгу в настоящую книгу. Обычно я пишу в книгу, поэтому я просто инициализирую ее, устанавливая переменную в пустую книгу workbook = Workbook(), но в этом случае я не уверен, смогу ли я открыть книгу, выполнив workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")

Если кто-то сможет определить, что я делаю не так, я был бы признателен.

Вот мой код:

workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")

for sheet in workbook.worksheets:
    print sheet

# or

for sheet in workbook.worksheets:
    print sheet.title

person Mike    schedule 28.08.2013    source источник


Ответы (4)


Откройте книгу с помощью load_workbook () и повторите более worksheets:

from openpyxl import load_workbook

wb = load_workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")

for sheet in wb.worksheets:
    print sheet
person alecxe    schedule 28.08.2013
comment
ссылка не работает :( - person gotube; 31.12.2019

Вот один, если вам нужны активные рабочие листы для вашего кода

for sheet in wb:
    ws = wb[sheet]
    print('Now in sheet: ' + ws.title)
person Tony S    schedule 11.11.2019

Чтобы напечатать заголовки всех листов в книге:

from openpyxl import load_workbook

wb = load_workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
print(wb.sheetnames)
person kashaziz    schedule 08.03.2019

Я немного боролся со всей workbook.active и не знал, как с этим справиться, поэтому я попробовал все понемногу, и вот что сработало для меня!

for sheet in workbook.sheetnames[2:len(workbook.sheetnames)]:
     ws = workbook[value]
     for val in ws.iter_rows(min_row=11, max_row=21, min_col=2, max_col=10, values_only=True):
          print(str(sheet) + " " + str(val))

Это напечатает имя листа, начиная с третьего листа, так как это то, что мне нужно, а также все указанные значения ячеек. Единственное другое, это печатает список, и если вы хотите перебрать каждое значение и вытащить значения 0 или None, вам понадобится еще один цикл. Надеюсь, это поможет тем, кто еще ищет!

person pepperRodney    schedule 19.09.2020