如何通过win32com 自信地设置调度对象的属性

0 投票
1 回答
2422 浏览
提问于 2025-04-16 13:05

我一直在努力给一个对象(或者说是实例)赋值。

xl=win32com.client.Dispatch('Excel.Application')
xl.Visible=0
srce=xl.Workbooks.Open('myexcelfile')
srce.CheckCompatibility='False'

当我查询这个叫 srce 的对象的 CheckCompatibility 属性时,得到的结果是 'False'。

>>> srce.CheckCompatibility
    False

所以我天真地认为我可以随便保存这个对象。

srce.SaveAs(r'c:\newtttxt14.xls',FileFormat=1)

但是当我这样做时,出现了兼容性检查的对话框。我点击继续,文件保存了,然后我再次检查兼容性。

>>> srce.CheckCompatibility
    True

So I again try to set it and this time I am successful

srce.CheckCompatibility='False'

我又查询了一次:

>>> srce.CheckCompatibility
False

现在当我尝试保存文件时,兼容性检查的对话框没有出现,文件正如我所希望的那样保存了。

在我尝试将文件保存为其他格式之前,我需要确认能否设置 srce 的属性——这能以其他方式实现吗?

谢谢。

1 个回答

6

我不太确定,但我猜可能是因为把文件保存为XLS格式时,CheckCompatibility的值被重置了,因为这个属性在Excel 97-2003的二进制工作簿中默认值是True。

无论如何,Excel在保存文件时可能会显示对话框的原因有很多,不仅仅是兼容性检查器。我觉得你真正想要的是在你的脚本保存文件时,不想出现对话框,这样就不需要用户进行任何操作。你可以通过添加以下内容来抑制对话框:

>>> xl.DisplayAlerts = False

在你调用srce.SaveAs(...)之前。

撰写回答