Python和Excel:尽管有XlSaveConflictResolution值,但总是会提示覆盖现有文件
问题内容:
我正在使用Python程序中的Excel.Application
COM对象打开CSV文件并将其另存为Excel工作簿。如果目标文件已经存在,则会提示我:“此位置已经存在一个名为’…’的文件。是否要替换它?”
尽管我已将XlSaveConflictResolution值设置为xlLocalSessionChanges,但仍会显示该消息,这应该自动覆盖更改而无需提示-
或如此。
我正在使用Microsoft Office Excel 2007(12.0.6535.5002)SP2 MSO和ActivePython
2.6.5.14。我已经使用常量和整数尝试了所有三个XlSaveConflictResolution值。我没有尝试过其他版本的Excel。
这是一个代码片段:
import win32com.client
xl = win32com.client.gencache.EnsureDispatch("Excel.Application")
wb = xl.Workbooks.Open(r"C:\somefile.csv")
wb.SaveAs(r"C:\somefile.xls", win32com.client.constants.xlWorkbookNormal, \
None, None, False, False, win32com.client.constants.xlNoChange, \
win32com.client.constants.xlLocalSessionChanges)
这是Microsoft关于Excel工作簿对象的SaveAs方法的规范:http :
//msdn.microsoft.com/zh-
cn/library/microsoft.office.tools.excel.workbook.saveas(VS.80).aspx
这可能是Excel 2007中的新“功能”,还是我做错了什么?
问题答案:
保存设置文件之前DisplayAlerts
,以False
抑制警告对话框:
xl.DisplayAlerts = False
保存文件后,通常将其设置DisplayAlerts
为True
:
xl.DisplayAlerts = True