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

2024-09-30 02:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,这实际上是一个解决我的主要问题的方法,那就是“忽略工作簿中的空工作表”。我找到了一种只打印那些不是空的表名的方法。所以,现在我想将这些名称传递到我的工作簿中,只访问那些工作表,而不是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工作簿时是否可以忽略所有空工作表?你知道吗


Tags: 方法nameinforgetbywsxlsx
1条回答
网友
1楼 · 发布于 2024-09-30 02:14:53

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

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[sheetname]从工作簿wb访问工作表即可。get_sheet_by_name()已弃用。参见official documentation。你知道吗

相关问题 更多 >

    热门问题