首页 > 解决方案 > 我想从同一个文件python的不同工作表中获取一些数据

问题描述

我想获取单个文件的一些数据,但是从不同的工作表中我尝试了下面的代码,但它只给出了第一张工作表的数据

from openpyxl import load_workbook

work = load_workbook(filename=r'the name of the file.xlsx',data_only=True)

for sheet in work.sheetnames[1:len(work.sheetnames)]:
    n = 3
    sheet1 = work[work.sheetnames[n]]
    for val in sheet1.iter_rows(min_row=9, max_row=14, min_col=6, max_col=8, values_only=True):
        print(str(sheet) + " " + str(val))
    n += 1

标签: pythonopenpyxl

解决方案


假设我们有一个 .xlsx 文件,其中包含 5 张名为sheet0, sheet1, sheet2 ..., sheet5

work.sheetnames为您提供所有工作表的列表['sheet0', 'sheet1', 'sheet2', 'sheet3', ..., 'sheet5']

当您使用:

for sheet in work.sheetnames[1:len(work.sheetnames)]:

意味着你要从 到 做你的sheet1工作sheet5

之后你有:

    n = 3
    sheet1 = work[work.sheetnames[n]]

work.sheetnames[3]返回字符串'sheet3',因此变量sheet1总是work['sheet3']在每次迭代中。我认为这就是为什么您的结果没有按您希望的方式运行的原因。

下面的代码可能可以解决这个问题。

from openpyxl import load_workbook
work = load_workbook(filename=r'the name of the file.xlsx',data_only=True)

for sheet in work.sheetnames[1:len(work.sheetnames)]:
    sheet1 = work[sheet]
    for val in sheet1.iter_rows(min_row=9, max_row=14, min_col=6, max_col=8, values_only=True):
        print(str(sheet) + " " + str(val))

推荐阅读