2016-09-22 287 views
0

我遇到了無法打開excel文件的問題。如何使用pywinauto關閉Excel文件

我使用的是swapy + pywinauto。
程序導出excel文件具有不同的名稱(例如時間..) 我用swapy關閉導出excel。

from pywinauto.application import Application 
app = Application().Start(cmd_line=u'"C:\\Program Files\\Microsoft Office\\Office14\\EXCEL.EXE" \\dde') 
xlmain = app.XLMAIN 
xlmain.Wait('ready') 
xlmain.Close() 
app.Kill_() 

但在下面出錯。

Traceback (most recent call last): 


File "D:/23007.py", line 54, in <module> 
xlmain.Wait('ready') 

WaitUntil(timeout, retry_interval, lambda: self.__check_all_conditions(check_method_names)) 


File "C:\Python35\lib\site-packages\pywinauto\timings.py", line 308, in WaitUntil 
raise err 

pywinauto.timings.TimeoutError: timed out 

Process finished with exit code 1 

enter image description here

回答

1

爲何使用app.XLMAIN?窗口的標題是否類似於XLMAIN?通常標題是<file name> - Excel,這樣pywinauto可以處理它:xlmain = app["<file name> - Excel"]

顯然Wait('ready')發生異常,因爲沒有找到標題爲"XLMAIN"或類似的窗口。

通常我會推薦使用pyWin32標準模塊win32com.client來使用Excel(通過標準的COM接口)。看到第二個答案在這裏例如:Driving Excel from Python in Windows

+0

感謝您的建議我.. swapy顯示XLMAIN,以便我爲什麼使用它。 問題是...當我輸出excel文件時,文件名每次都會改變..(例如:第一次讓我們說... first.xlsx和..next文件名將是second.xlsx) 你知道嗎如何捕捉文件名? – everline

+0

可以使用正則表達式匹配。 'xlmain = app.Window_(title_re =「。* Excel」)' –