如何迭代工作簿中的工作表,openpyxl

时间:2013-08-28 18:34:31

标签: python excel 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

4 个答案:

答案 0 :(得分:16)

通过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

答案 1 :(得分:0)

要打印工作簿中所有工作表的标题,请执行以下操作:

from openpyxl import load_workbook

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

答案 2 :(得分:0)

如果您需要有效的工作表来编写代码,这就是一个

for sheet in wb:
    ws = wb[sheet]
    print('Now in sheet: ' + ws.title)

答案 3 :(得分: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”值,则需要另一个循环。希望这对其他人有帮助!