Создайте PDF-файл из Excel через Python, не открывая Excel.Python

Программы на Python
Ответить
Anonymous
 Создайте PDF-файл из Excel через Python, не открывая Excel.

Сообщение Anonymous »

Мы создавали PDF-файлы из Excel через Python. В настоящее время мы делаем это, используя библиотеку Win32com, как указано в этом ответе на переполнение стека. Таким образом, мы явно вызываем o = win32com.client.Dispatch("Excel.Application"), открываем реальный экземпляр Excel (видимый в диспетчере задач), вызываем возможность печати PDF-файлов Excel, wb.ActiveSheet.ExportAsFixedFormat( 0, PATH_TO_PDF) и, наконец, закрыв экземпляр Excel, o.Quit(). Основным недостатком здесь является то, что если Excel уже открыт в системе, вызов Quit() заставляет Excel открыть системный диалог с просьбой сохранить изменения, игнорировать изменения и закрыть или прервать работу. Хотя мы можем обнаружить эту ошибку в Python, похоже, мы не сможем закрыть экземпляр Excel после того, как это произойдет. Перезапуск программы Python не помогает, поскольку старый экземпляр Excel все еще жив. Нам нужно подавить его через диспетчер задач, чтобы иметь возможность снова запустить программу.
MRE:

Код: Выделить всё

def save_as_pdf(ExcelInstance, path_to_pdf):
wb_path = r'~/path_to_xlsx/workbook.xlsx'
wb = ExcelInstance.Workbooks.Open(wb_path)

print_area = 'A1:G50'

ws = wb.Worksheets[0]
ws.PageSetup.Zoom = False
ws.PageSetup.FitToPagesTall = 1
ws.PageSetup.FitToPagesWide = 1
ws.PageSetup.PrintArea = print_area

wb.WorkSheets([1]).Select()
wb.ActiveSheet.ExportAsFixedFormat(0, path_to_pdf)

wb.Close(False)

o = win32com.client.Dispatch("Excel.Application")
o.Visible = False
save_as_pdf(o, path_to_pdf)
o.Quit()
del o
Чтобы воспроизвести проблему, запустите указанную выше программу с уже открытым экземпляром Excel (в любой произвольной книге).
Было бы хорошо обойти эту проблему , поскольку требовать от пользователей закрыть Excel через диспетчер задач практически невозможно. Кроме того, если несколько пользователей создают отчеты в централизованной системе, возникают проблемы, если два или более вызовов одновременно открывают экземпляры Excel.
Мы нашли решения Python, такие как Spire.XLS или ReportLab, для создания PDF-файлов из Документы Excel, но это довольно дорогие сторонние библиотеки. Учитывая, что у нас есть действующая лицензия Excel, мы бы предпочли использовать ее.
Как мы можем автоматически создавать PDF-документы из Excel без необходимости явно открывать Excel?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ning-excel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»