Python和Excel:尽管有XlSaveConflictResolution值,但覆盖现有文件总是会提示

Mik*_*Lin 6 python com excel activex excel-2007

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

以下是Microsoft关于Excel工作簿对象的SaveAs方法的规范:http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(VS.80).aspx

这可能是Excel 2007中的一个新"功能",还是我做错了什么?

Ste*_*ski 10

保存设置文件之前DisplayAlerts,以False抑制警告对话框:

xl.DisplayAlerts = False
Run Code Online (Sandbox Code Playgroud)

保存文件后,通常最好设置DisplayAlertsTrue:

 xl.DisplayAlerts = True
Run Code Online (Sandbox Code Playgroud)