python win32 COM关闭excel工作簿

| 我在COM中打开了几个不同的工作簿(excel xlsx格式),并弄乱了它们。随着程序的进行,我希望关闭一本特定的工作簿,但其余的保持打开状态。 如何关闭一个工作簿? (而不是整个excel应用程序)
xl = Dispatch(\"Excel.Application\")
xl.Visible = False
try:
    output = xl.Workbooks.Open(workbookName)
    output2 = xl.Workbooks.Open(workbook2Name)
except com_error:
    print \"you screwed up blahblahblah\"
    exit()

#work on some stuff
#close output but keep output2 open
    
已邀请:
        Workbook COM对象具有Close()方法。基本上,它应该是这样的:
xl = Dispatch(\'Excel.Application\')
wb = xl.Workbooks.Open(\'New Workbook.xlsx\')
# do some stuff
wb.Close(True) # save the workbook
上面只是一个框架,以下是一些适用于我的计算机上针对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:\\Path\\to\\folder\\Test.xlsx\')
当然,这将创建一个新的xlsx文件。但随后,我可以在同一会话中成功打开并修改文件,如下所示:
wb = xl.Workbooks.Open(r\'C:\\Path\\to\\folder\\Test.xlsx\')
ws = wb.Worksheets(1)
cell = ws.Cells(2)
cell.Value = \'Some more text\'
wb.Close(True)
不知道有没有帮助...     
        您也可以尝试使用以下代码:
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()
    

要回复问题请先登录注册