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

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

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

5 голосов
/ 06 марта 2011

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

В любом случае существует несколько причин, по которым Excel может отображать диалоговое окно при сохранении файла, а не только средство проверки совместимости.Я подозреваю, что вы действительно хотите, чтобы подавить диалоговые окна, чтобы не требовалось взаимодействия с пользователем, когда ваш сценарий сохраняет файл.Вы можете отключить диалоговые окна, добавив:

>>> xl.DisplayAlerts = False

перед вашим вызовом srce.SaveAs(...).

...