简体   繁体   English

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

[英]How to iterate over worksheets in workbook, openpyxl

I've been using the openpyxl module to do some processing on some .xlsx files.我一直在使用 openpyxl 模块对一些 .xlsx 文件进行一些处理。 I've been trying to figure out how to iterate over sheets in a workbook.我一直在试图弄清楚如何迭代工作簿中的工作表。 I'm not sure if I can get it figured out.我不确定我是否能弄清楚。 I've tried the 2 codes below which both return empty results.我已经尝试了下面的 2 个代码,它们都返回空结果。 My .xlsx file has about 20 sheets, so something should return.我的 .xlsx 文件有大约 20 张,所以应该返回一些东西。

The one thing I couldn't find on the internet, is how to set a workbook to an actual workbook.我在互联网上找不到的一件事是如何将工作簿设置为实际工作簿。 Usually I am writing to a workbook, so I just initialize it by setting a variable to en empty workbook workbook = Workbook() but in this case, I am unsure if I can open a workbook by doing workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")通常我正在写工作簿,所以我只是通过将变量设置为 en empty workbook workbook = Workbook()来初始化它,但在这种情况下,我不确定是否可以通过执行workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")

If anyone can identify what it is I am doing wrong, I would appreciate it.如果有人能确定我做错了什么,我将不胜感激。

Here is my code:这是我的代码:

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

Open the workbook via load_workbook() and iterate over worksheets :通过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)

Here's one if you need active worksheets for your code如果您的代码需要活动工作表,这是一个

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

To print titles of all sheets in a workbook:打印工作簿中所有工作表的标题:

from openpyxl import load_workbook

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

I struggled a bit with the whole "workbook.active" and didn't know how to get around it so I tried a little bit of everything and here is what worked well for me!我对整个“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))

This will print the sheet name starting with the third sheet, since that's what I needed, as well as all the cell values referenced.这将从第三张工作表开始打印工作表名称,因为这是我需要的,以及引用的所有单元格值。 The only other thing is this prints a list and if you want to iterate through each value and pull out "0s" or "None" values, then you'll need another loop.唯一的另一件事是这会打印一个列表,如果您想遍历每个值并提取“0s”或“None”值,那么您将需要另一个循环。 Hope this helps whoever else is looking!希望这可以帮助其他正在寻找的人!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM