18

我一直在使用 openpyxl 模块对一些 .xlsx 文件进行一些处理。我一直在试图弄清楚如何迭代工作簿中的工作表。我不确定我是否能弄清楚。我已经尝试了下面的 2 个代码,它们都返回空结果。我的 .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
4

4 回答 4

32

通过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
于 2013-08-28T18:36:39.237 回答
5

如果您的代码需要活动工作表,这是一个

for sheet in wb:
    ws = wb[sheet]
    print('Now in sheet: ' + ws.title)
于 2019-11-11T22:40:02.170 回答
2

打印工作簿中所有工作表的标题:

from openpyxl import load_workbook

wb = load_workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
print(wb.sheetnames)
于 2019-03-08T20:08:38.773 回答
0

我对整个“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))

这将从第三张工作表开始打印工作表名称,因为这是我需要的,以及引用的所有单元格值。唯一的另一件事是这会打印一个列表,如果您想遍历每个值并提取“0s”或“None”值,那么您将需要另一个循环。希望这可以帮助其他正在寻找的人!

于 2020-09-19T05:20:43.677 回答