Печать листов Excel с помощью COM-интерфейса

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

import win32com.client
o = win32com.client.Dispatch("Excel.Application")
o.Visible = 1
wb = o.Workbooks.Open('foo.xls')
ws = wb.Worksheets[1]
ws.printout()

Но, к сожалению, когда я это делаю, появляется экран принтера Adobe с просьбой указать путь, по которому я хочу сохранить PDF-файл, и, если мне нужно ввести его или щелкнуть ОК для каждой страницы, это побеждает цель делать это программно. Есть ли способ ввести этот путь в код Python, а не вручную? Есть ли лучший способ преобразовать каждый из этих листов в каждой из этих книг в PDF? Большое спасибо Алекс


person Alex S    schedule 01.02.2012    source источник
comment
К сожалению, это поведение драйвера принтера Adobe PDF по умолчанию.   -  person Chris Laplante    schedule 01.02.2012
comment
Я обнаружил, что PrintOut () чувствителен к регистру.   -  person Norfeldt    schedule 04.11.2013


Ответы (2)


Вместо использования метода PrintOut используйте ExportAsFixedFormat. Вы можете указать формат pdf и указать имя файла. Попробуй это:

ws.ExportAsFixedFormat(0, 'c:\users\alex\foo.pdf')
person Rachel Hettinger    schedule 01.02.2012

Вы можете сохранить в формате PDF или распечатать в формате PDF. Это должно обойти проблемы с драйвером принтера.

person Raymond Hettinger    schedule 01.02.2012
comment
хм хорошо, извини, как мне это сделать? - person Alex S; 01.02.2012