添加数据后如何保存并关闭Excel文件?

5

我正在尝试打开一个现有的Excel 2013文件,添加数据,然后保存它(相同名称),然后关闭它,最后关闭Excel。代码将打开文件,选择正确的工作表并写入数据,但当我尝试保存时,我会得到一个属性错误。我是否缺少库或其他东西?以下是代码:

import win32com.client as win32

def Inventory_Status():
    excel = win32.gencache.EnsureDispatch('Excel.Application') # opens Excel
    wb = excel.Workbooks.Open(r'C:/pytest/Test.xlsx') # opens "Test" file
    wb.Sheets(2).Select() # select 2nd worksheet "Aisle_2"
    excel.Visible = True
    excel.Range("A1").Select()
    excel.ActiveCell.Value = "1234"   # Fill in test data #
    wb.save()
    wb.Close()
    excel.Quit()

Inventory_Status()

raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))

AttributeError: '<win32com.gen_py.Microsoft Excel 15.0 Object Library._Workbook instance at 0x5901424>' object has no attribute 'save'

我有点困惑,你的帖子中为什么有 raise 这一行?这是在你的脚本里吗?运行脚本时是否打印了它? - SuperBiasedMan
4
不使用该模块,仅查看代码的连续性:save 中的“s”应该大写吗? - Alecg_O
@SuperBiasedMan 那可能只是回溯信息。 - TankorSmash
@TankorSmash 哦,我现在明白了。该模块手动引发了错误,并将其引用到该行作为错误来源。谢谢,那让我有点困惑。 - SuperBiasedMan
2个回答

5

请将save()方法的's'字母大写。


谢谢Alecg_O!就是这样了。我不想使用严厉的语言,但我是个白痴。我看了很多文档,尝试了很多不同的方法,最后发现问题很简单。我将来会更加勤奋。再次感谢你。 - JeffC
没关系,这种情况发生在最好的人身上——有时只需要换个人看一下。 - Alecg_O

2
根据这个资源,你需要在工作簿上调用SaveAs(xlsx_filepath)
def Inventory_Status():
    excel = win32.gencache.EnsureDispatch('Excel.Application') # opens Excel
    file_path = r'C:/pytest/Test.xlsx'
    wb = excel.Workbooks.Open(file_path) # opens "Test" file

    wb.Sheets(2).Select() # select 2nd worksheet "Aisle_2"
    excel.Visible = True
    excel.Range("A1").Select()
    excel.ActiveCell.Value = "1234"   # Fill in test data #

    wb.SaveAs(file_path)
    wb.Close()
    excel.Quit()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接