使用 openpyxl 按名称获取工作表

Get sheet by name using openpyxl

提问人:horace_vr 提问时间:4/24/2016 最后编辑:Peter Mortensenhorace_vr 更新时间:7/12/2023 访问量:214339

问:

我正在将一些数据写入 Excel 文件,但我不知道如何调整代码以便能够控制我正在写入哪个工作表:

from openpyxl import load_workbook

wb = load_workbook(filename)
active_ws = wb.active

而不是,我怎么能说这样的话(这就是 VBA 语法的样子......wb.activeSheets('Data')

python openpyxl

评论


答:

163赞 Valeriy Solovyov 4/24/2016 #1

您应该使用wb[sheetname]

from openpyxl import load_workbook
wb2 = load_workbook('test.xlsx')
ws4 = wb2["New Title"]

附言: 您应该检查您的工作表名称是否为wb.sheetnames

print(wb2.sheetnames)
['Sheet2', 'New Title', 'Sheet1']
15赞 Youssri Abo Elseod 4/23/2019 #2
import openpyxl

n = 0
wb = openpyxl.load_workbook('D:\excel.xlsx')
sheets = wb.sheetnames
ws = wb[sheets[n]]

参考:如何在 Excel openpyxl Python 中在工作表之间切换以进行更改

1赞 Aarthi Rishi 8/18/2022 #3

修复您的版本。从 2.3.2 升级到 2.4.10 将解决此问题。执行此操作:openpyxl

pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org openpyxl==2.4.10
0赞 Neel 7/12/2023 #4

上述解决方案有效,但只是指出 excel 文件应该是“Excel 工作簿 (.xlsx)”而不是“严格的开放 XML 电子表格 (.xlsx)”

workbook = openpyxl.load_workbook(file.xlsx)
sheet = workbook[sheet_name]