【问题标题】:How could I close Excel file using pywinauto如何使用 pywinauto 关闭 Excel 文件
【发布时间】:2016-09-22 02:31:34
【问题描述】:

我遇到了无法生成 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

【问题讨论】:

    标签: python excel pywinauto


    【解决方案1】:

    你为什么使用app.XLMAIN?窗口的标题和XLMAIN相似吗?通常标题是&lt;file name&gt; - Excel,以便pywinauto可以这样处理:xlmain = app["&lt;file name&gt; - Excel"]

    显然Wait('ready') 引发了异常,因为找不到标题为"XLMAIN" 或类似名称的窗口。

    一般来说,我建议使用 pyWin32 标准模块 win32com.client 来处理 Excel(通过标准 COM 接口)。请参阅此处的第二个答案,例如:Driving Excel from Python in Windows

    【讨论】:

    • 感谢您的建议。swpy 展示了 XLMAIN,这就是我使用它的原因。问题是......当我导出excel文件时,文件名每次都会改变......(例如:第一次让我们说......first.xlsx和..下一个文件名将是second.xlsx)你知道怎么做吗抓到文件名?
    • 可以使用正则表达式匹配。 xlmain = app.Window_(title_re=".* Excel")
    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多