Solución:
El objeto COM del libro de trabajo tiene un método Close (). Básicamente, debería ser algo como:
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open('New Workbook.xlsx')
# do some stuff
wb.Close(True) # save the workbook
Lo anterior era solo un esqueleto, aquí hay un código que funciona en mi máquina contra Office 2010:
from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Add()
ws = wb.Worksheets.Add()
cell = ws.Cells(1)
cell.Value="Some text"
wb.Close(True, r'C:PathtofolderTest.xlsx')
Por supuesto, eso crea un nuevo archivo xlsx. Pero luego puedo abrir y modificar con éxito el archivo en la misma sesión de la siguiente manera:
wb = xl.Workbooks.Open(r'C:PathtofolderTest.xlsx')
ws = wb.Worksheets(1)
cell = ws.Cells(2)
cell.Value="Some more text"
wb.Close(True)
No sé si algo de eso ayuda …
También puede intentar utilizar el siguiente código:
excel = Dispatch("Excel.Application")
excel.Visible = False
workbook = excel.Workbooks.Open(fileName)
# with saving
excel.DisplayAlerts = False
if saveAs:
excel.ActiveWorkbook.SaveAs(fullFileNameToSave)
else:
excel.ActiveWorkbook.Save()
excel.Quit()
#without saving
map(lambda book: book.Close(False), excel.Workbooks)
excel.Quit()
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)