如何使用openpyxl在python中修改特定工作表中的数据

如何使用openpyxl在python中修改特定工作表中的数据,python,excel,openpyxl,Python,Excel,Openpyxl,我目前正在使用openpyxl库修改excel中的数据。我的excel有很多工作表,我可以在第一个工作表中完成。但是,当我试图修改另一个文件时,它不起作用,将破坏该文件(我无法再次打开excel) 这是我做第一张的方法 from openpyxl import load_workbook; book = load_workbook('Template.xlsx') sheet = book.active #active means get the first sheet sheet['A1']=

我目前正在使用openpyxl库修改excel中的数据。我的excel有很多工作表,我可以在第一个工作表中完成。但是,当我试图修改另一个文件时,它不起作用,将破坏该文件(我无法再次打开excel)

这是我做第一张的方法

from openpyxl import load_workbook;
book = load_workbook('Template.xlsx')
sheet = book.active #active means get the first sheet
sheet['A1']= 100
book.save('Template.xlsx')
但是,它对另一个不起作用

sheet2 = book.get_sheet_by_name('Table 2')
sheet2['F9'] = 100
book.save('Template.xlsx')
AttributeError:“非类型”对象没有属性“读取”

说明:按名称获取工作表与另一个问题中的获取工作表名称不同


有人知道怎么解决这个问题吗?非常感谢

实际上,您非常接近解决方案。 到目前为止,这很好:

from openpyxl import load_workbook
book = load_workbook('Template.xlsx')
sheet = book.active #active means last opened sheet
sheet['A1']= 100
book.save('Template.xlsx')
要更改为另一张图纸,需要按其名称命名:

sheet2 = book['Sheet 2']
sheet2['F9'] = 100
book.save('Template.xlsx')

实际上,你已经非常接近解决方案了。 到目前为止,这很好:

from openpyxl import load_workbook
book = load_workbook('Template.xlsx')
sheet = book.active #active means last opened sheet
sheet['A1']= 100
book.save('Template.xlsx')
要更改为另一张图纸,需要按其名称命名:

sheet2 = book['Sheet 2']
sheet2['F9'] = 100
book.save('Template.xlsx')


可能的副本谢谢你的回复!但是get_sheet_name或sheetnames是返回此工作簿中工作表名称列表的函数。get_sheet_by_name是按工作表名称返回工作表的函数。我尝试使用的是阅读和修改我的第二张工作表。始终提供错误的完整回溯,因为这样可以更容易地识别问题。明白了,谢谢Charlie!可能的副本谢谢你的回复!但是get_sheet_name或sheetnames是返回此工作簿中工作表名称列表的函数。get_sheet_by_name是按工作表名称返回工作表的函数。我尝试使用的是阅读和修改我的第二张工作表。始终提供错误的完整回溯,因为这样可以更容易地识别问题。明白了,谢谢Charlie!嗨,非常感谢你的回复。这本书['Sheet 2']确实有效,实际上这本书也是有效的。按书名获取书单(“表2”)也有效。但我认为问题在于这本书。在这种情况下,保存不起作用。我可以将其保存到第一张工作表中,但当我修改第二张工作表并再次使用时,它会崩溃。您对文件夹或正在编辑的文件具有写入权限吗?我刚刚执行了命令,它们工作得很好。(Win10/64&&python3.6.5&&openpyxl==2.5.4)是的,我编写了文件的绝对路径,它在第一张工作表中确实有效。您能保存两张图纸的修改吗?那会很奇怪,我可能会尝试另一台电脑…是的,我可以保存。我唯一能想到的是,您的.xlsx文件中没有“Sheet 2”,因此openpyxl无法写入或保存它。如果是这种情况,必须首先创建工作表:
book.create_sheet(“工作表2”)
然后执行您可以在我的答案的第二块中看到的代码。您是对的,它可以在另一张工作表中工作,我创建了一张新工作表,我可以保存这两张工作表。我不知道为什么它在我的模板中不起作用。只要想办法,谢谢!嗨,非常感谢你的回复。这本书['Sheet 2']确实有效,实际上这本书也是有效的。按书名获取书单(“表2”)也有效。但我认为问题在于这本书。在这种情况下,保存不起作用。我可以将其保存到第一张工作表中,但当我修改第二张工作表并再次使用时,它会崩溃。您对文件夹或正在编辑的文件具有写入权限吗?我刚刚执行了命令,它们工作得很好。(Win10/64&&python3.6.5&&openpyxl==2.5.4)是的,我编写了文件的绝对路径,它在第一张工作表中确实有效。您能保存两张图纸的修改吗?那会很奇怪,我可能会尝试另一台电脑…是的,我可以保存。我唯一能想到的是,您的.xlsx文件中没有“Sheet 2”,因此openpyxl无法写入或保存它。如果是这种情况,必须首先创建工作表:
book.create_sheet(“工作表2”)
然后执行您可以在我的答案的第二块中看到的代码。您是对的,它可以在另一张工作表中工作,我创建了一张新工作表,我可以保存这两张工作表。我不知道为什么它在我的模板中不起作用。只要想办法,谢谢!