我看到了几个类似的问题,但它们似乎都涉及VBA,而不是Python。
这是一个相对较新的错误,所以我怀疑这可能与我现在使用Python 3.7有关。
基本上,使用win32com.client中的Dispatch方法,我可以像往常一样打开一个新的Excel工作簿并进行编辑。然而,由于某种原因,我无法告诉应用程序成功退出。
过去我可以写:self.excel_app.Quit()
但现在,我得到了一个AttributeError。表示Excel.Application没有Quit((属性。同样,这是Python 3.7。发生了什么?
[编辑]相关代码:
import sys
from win32com.client import Dispatch
#...
class X(object):
def __init__(self):
#...
self.excel_app = Dispatch("Excel.Application")
self.report_workbook = self.excel_app.Workbooks.Add()
#...
def close_excel(self):
try:
self.excel_app.Quit()
except Exception as ex:
sys.stdout.write("Could not quit application.n-> ({}) {}n".format(ex.__class__.__name__, ex))
self.excel_app = None
打印到终端的例外情况是:
Could not quit application.
(AttributeError) Excel.Application.Quit
事实证明,我的错误是由于我仍在使用线程。线程作为尝试执行此操作的对象的基类。显然,它已经不能很好地与DispatchExcel对象配合使用了,无论如何,我都在努力摆脱Threads。