Save and close an Excel file after adding data?

时间:2015-07-28 15:42:54

标签: python excel

I am trying to open an existing Excel 2013 file, add data and then save it(same name) and then close it and then close Excel. The code will open the file, select the correct worksheet and write the data, but when I try save it I get an attribute error. Am I missing a library or something? Here is the code:

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'

2 个答案:

答案 0 :(得分:3)

Capitalize the 's' on the save() method.

答案 1 :(得分:2)

According to this resource, you need to call SaveAs(xlsx_filepath) on the workbook:

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()