Как анализировать только определенные листы в книге, используя openpyxl, или как игнорировать пустые листы? - PullRequest
1 голос
/ 19 апреля 2019

Ну, на самом деле это обходной путь для моей главной проблемы, которая заключается в том, чтобы "игнорировать пустые листы в моей книге". Я нашел способ напечатать только те имена листов, которые не являются пустыми. Итак, теперь я хочу передать эти имена в мою рабочую книгу и получить доступ только к этим листам вместо каждого отдельного листа в wb. (Мне нужно использовать openpyxl для этого.)

Я пробую ниже, но это не работает:

wb = openpyxl.load_workbook("source_file.xlsx", data_only=TRUE)

for ws in wb.get_sheet_by_name(['Sheet1', 'Sheet2', 'Sheet4', 'Sheet5']):
 for row in ws:
   <do the necessary parsing operations here>

Но это выдает следующую ошибку: "Worksheet ['Sheet1', 'Sheet2', 'Sheet4', 'Sheet5'] does not exist."

И если я передам имена отдельно, то там написано:

TypeError: get_sheet_by_name() takes 2 positional arguments but 5 were given

Есть ли способ, с помощью которого я могу указать ему доступ только к определенным листам вместо каждого листа в wb? Или, лучше, можно ли игнорировать все пустые листы при разборе .xlsx книги?

1 Ответ

0 голосов
/ 19 апреля 2019

Вы можете сохранить имена листов в списке, а затем выполнить итерацию по этому списку, чтобы открыть каждый лист:

import openpyxl

wb = openpyxl.load_workbook("source_file.xlsx", data_only=True)

sheets = ['Sheet1', 'Sheet2', 'Sheet4', 'Sheet5']

for sheet in sheets:
    for row in wb[sheet]:
       # <do the necessary parsing operations here>

Обратите внимание, что вы можете просто получить доступ к листу из рабочей книги wb с помощью wb[sheetname]. get_sheet_by_name() устарело. См. официальную документацию .

...