如何使用openpyxl解析工作簿中的特定工作表 - 或如何忽略空工作表?

问题描述 投票:1回答:1

嗯,这实际上是我的主要问题的解决方法,即“忽略我的工作簿中的空白页”。我找到了一种方法来只打印那些非空的工作表名称。所以,现在我想将这些名称传递给我的工作簿,只访问那些工作表而不是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工作簿时忽略所有空表?

python python-3.x openpyxl
1个回答
0
投票

您可以将工作表名称存储在列表中,然后遍历该列表以打开每个工作表:

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()已被弃用。见official documentation

© www.soinside.com 2019 - 2024. All rights reserved.