【问题标题】:How to iterate over worksheets in workbook, openpyxl如何迭代工作簿中的工作表,openpyxl
【发布时间】:2013-08-28 18:34:30
【问题描述】:

我一直在使用 openpyxl 模块对一些 .xlsx 文件进行一些处理。我一直在试图弄清楚如何迭代工作簿中的工作表。我不确定我是否能弄清楚。我已经尝试了下面的 2 个代码,它们都返回空结果。我的 .xlsx 文件有大约 20 张,所以应该返回一些东西。

我在 Internet 上找不到的一件事是如何将工作簿设置为实际工作簿。通常我正在写工作簿,所以我只是通过将变量设置为空工作簿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

【问题讨论】:

    标签: python excel openpyxl


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          我对整个“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”值,那么您将需要另一个循环。希望这可以帮助其他正在寻找的人!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-07-09
            • 1970-01-01
            • 2012-12-02
            • 1970-01-01
            • 1970-01-01
            • 2018-08-03
            相关资源
            最近更新 更多