【问题标题】:Python - win32com visible false not working?Python - win32com 可见错误不起作用?
【发布时间】:2019-07-15 21:13:53
【问题描述】:

我正在尝试将 excel 文件转换为 PDF。使用Print chosen worksheets in excel files to pdf in pythonPython - Converting XLSX to PDF,我编写了下面的代码。

这可以毫无问题地将 excel 转换为 PDF,但它会打开 excel 文件。我认为.Visible = False 的目的是为了防止这种情况发生?我希望 excel 对象保持隐藏状态,因为我正在对 100 多个文件执行此操作,并且我不希望 excel 打开 100 次。

import win32com.client
import os
import re

nm = 'Sample.xlsx'

excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = False
wb = excel.Workbooks.Open('{0}\\{1}'.format(os.getcwd(), nm))
wb.WorkSheets('Report').Select()
nm_pdf = re.sub('.xlsx', '.pdf', nm, count = 1)
wb.ActiveSheet.ExportAsFixedFormat(0, '{0}\\{1}'.format(os.getcwd(), nm_pdf))
#excel.Quit()

【问题讨论】:

  • 这是您正在寻找的答案吗? stackoverflow.com/questions/4439689/…
  • @Sirsmorgasboard,这是针对没有 .Visible 属性的应用程序的解决方法。但是 OP 说 Excel 确实具有该属性,并且由于我使用的是 Excel,.Visible 应该可以正常工作吗?

标签: python excel win32com


【解决方案1】:

上述两种方法都不适用于我,但最终它成功了,也许它会对某人有用:

excel.ScreenUpdating = False
excel.DisplayAlerts = False
excel.EnableEvents = False

*在处理完文件后将其全部设置回True

【讨论】:

  • 如果已经打开了一个 Excel 应用程序,这对我有用,但不确定其他人是否也是如此
【解决方案2】:

对于遇到此问题的任何人,这对我有帮助:

excel = client.Dispatch("Excel.Application")
excel.Interactive = False
excel.Visible = False

“Interactive = False”部分是我所缺少的。 Visible 设置为 False 本身并没有起到作用。也不要伪造关闭工作簿。

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2023-03-24
    • 2022-06-11
    • 2018-10-13
    • 2020-07-15
    • 1970-01-01
    • 2012-11-06
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多