Python и Excel: перезапись существующего файла всегда запрашивает, несмотря на значение XlSaveConflictResolution - PullRequest
6 голосов
/ 30 июля 2010

Я использую COM-объект Excel.Application из программы Python, чтобы открыть файл 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 о методе SaveAs для объекта книги Excel: http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(VS.80).aspx

Может ли это быть новой "функцией" в Excel 2007, или я просто сделал что-то не так?

1 Ответ

10 голосов
/ 30 июля 2010

Перед сохранением файла установите DisplayAlerts в False, чтобы отключить диалоговое окно с предупреждением:

xl.DisplayAlerts = False

После сохранения файла обычно рекомендуется установить DisplayAlerts обратно на True:

 xl.DisplayAlerts = True
...