【发布时间】:2014-04-10 08:11:08
【问题描述】:
试图通过 python 更改 Excel_sheet 并且在进程恢复中完全困惑。
import win32com.client
class XlsClass:
def __init__(self ,filename=None ,*,Visible=False ,Alerts=False):
self.xlApp = win32com.client.Dispatch('Excel.Application')
self.xlApp.Visible = Visible
self.xlApp.DisplayAlerts = Alerts
if filename:
self.filename = filename
self.xlBook = self.xlApp.Workbooks.Open(filename)
else:
self.xlBook = self.xlApp.Workbooks.Add()
self.filename = ''
def __del__(self):
self.xlBook.Close()
self.xlApp.Quit()
有时代码运行良好,但有时 python 会报错 就像'self.xlApp.Visible 不能设置?'。 这总是在循环中发生,就像:
for fname in filelist:
xlbook = XlsClass(fname)
#do something
然后我检查了我的“windowstasksmanager”并注意到
xlbook = Dispatch('Excel.Application')
将创建一个名为“EXCEL.EXE*32”的进程。
当我输入'xlbook.Quit()' 时,进程仍然存在!?
那么可能是因为这个剩余过程而出现的“无法设置”错误?
调用 func 'Dispatch' 后,如何才能完全关闭它?
del xlbook
无法终止进程,它是如何工作的?
英语不好,等待帮助....谢谢。
================================================ =
2014 年 3 月 10 日: 我再次捕获错误并捕获回溯...
Traceback (most recent call last):
File "C:\work_daily\work_RecPy\__RecLib\XlsClass.py", line 9, in __init__
self.xlApp.Visible = Visible
File "C:\Program Files\python33\lib\site-packages\win32com\client\dynamic.py",
line 576, in __setattr__
raise AttributeError("Property '%s.%s' can not be set." % (self._username_,attr))
AttributeError: Property 'Excel.Application.Visible' can not be set.
我试过了
del self.xlApp
要么
xlbook = None
在创建新的 XlsClass() 但似乎不起作用之前...
【问题讨论】:
-
抱歉,回溯信息模棱两可,如果再次出现错误,我会更新它。