Наш сгенерированный файл XLSX имеет фиксированный размер: A1:G50. Он содержит 3 изображения (2 логотипа и график результатов, сохраненные в файл PNG с помощью matplotlib), а также текст и цифры, некоторые из которых выделены жирным шрифтом.
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.
Мы нашли решения Python, такие как Spire.XLS или ReportLab, для создания PDF-файлов из Документы Excel, но это довольно дорогие сторонние библиотеки. Учитывая, что у нас есть действующая лицензия Excel, мы бы предпочли использовать ее.
Как мы можем автоматически создавать PDF-документы из Excel без необходимости явно открывать Excel?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ning-excel