python win32 COM关闭excel工作簿

标签 python winapi excel com win32com

我在 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 对象 has a Close() method .基本上,它应该是这样的:

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 文件。但随后我能够在同一 session 中成功打开和修改文件,如下所示:

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)

不知道有没有帮助...

关于python win32 COM关闭excel工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337595/

相关文章:

python - 如何使用 matplotlib 绘制大范围值?

python - concurrent.futures.ThreadPoolExecutor 吞噬异常(Python 3.6)

c++ - 资源管理器在 TILE View 模式下不显示 shell 命名空间扩展的项目详细信息

excel - 如何从 VBA 在 Excel 2010 中创建安全受密码保护的 .xls 文件

在 Windows 10 中以编程方式运行 python map 驱动器

excel - 内存不足错误 - 尝试使用 Win API 检查 ErrorHandler 中的内存使用情况

winapi - 检查句柄是否属于当前进程?

python - 尝试读取 Excel 文件时如何修复[Errno 13]权限被拒绝?

excel - Sum 函数不适用于带有公式的单元格

python - 如何在Python中使用RSA私钥(不是普通签名)加密数据?