Как я могу уверенно установить атрибуты отправляемых объектов с помощью win32com

Я изо всех сил пытался назначить атрибут для объекта (или это экземпляр)

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 ответ

Решение

Я не уверен, но я подозреваю, что происходит то, что сохранение файла в форме XLS сбрасывает значение CheckCompatibility поскольку значением по умолчанию для этого свойства является True для двоичных книг Excel 97-2003.

In any case, there are multiple reasons why Excel might display a dialog when saving a file, not just the compatibility checker. I suspect what you really want is to suppress dialog boxes so that no user interactivity is required when your script saves a file. You can suppress dialog boxes by adding:

>>> xl.DisplayAlerts = False

до вашего звонка srce.SaveAs(...),

Другие вопросы по тегам