python - 我想从同一个文件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
解决方案
假设我们有一个 .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))
推荐阅读
- flutter - 如何在颤振上使用 FirebaseAnalytics 的用户属性?
- javascript - 从字符串末尾删除动态内容
- reactjs - React 事件处理程序未按预期分配模式,评估为 null
- stata - Stata 16.0 与 Python 的集成
- excel - Excel Userform IF AND statement not working
- maven - 在 Visual Studio Code 中使用本地版本的 Maven 依赖项
- command-line-interface - 是否有一种编程语言不能创建 CLI 应用程序?
- ios - iOS 12 上的 Fork() 被拒绝
- r - 获取提供给 purrr::pmap 调用的参数
- ios - 我想从另一个 ViewController 调用我的函数