Django - Создание excel-файла из ответа с помощью openpyxl и преобразование его в pdf в той же функции
В приложении Django (ubuntu server online) я знаю, как создать xlsx файл из HttpResponse с помощью openpyxl, используя этот кусок кода :
views.py
def export_to_excel(request):
movie_queryset = models_bdc.objects.all()
response = HttpResponse(
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
)
response['Content-Disposition'] = 'attachment; filename={date}-movies.xlsx'.format(
date=datetime.now().strftime('%Y-%m-%d'),
)
workbook = Workbook()
# Get active worksheet/tab
worksheet = workbook.active
worksheet.title = 'Movies'
# Define the titles for columns
columns = [
'ID',
'Title',
'Description',
'Length',
'Rating',
'Price',
]
row_num = 1
# Assign the titles for each cell of the header
for col_num, column_title in enumerate(columns, 1):
cell = worksheet.cell(row=row_num, column=col_num)
cell.value = column_title
# Iterate through all movies
#try to sort by index here and ignore empty rows
# apply a save to DB before export to excel to get the latest changes
for movie in movie_queryset:
row_num += 1
# Define the data for each cell in the row
row = [
movie.bdc_description_1,
movie.bdc_description_2,
movie.bdc_description_3,
movie.bdc_description_4,
movie.bdc_description_5,
movie.bdc_description_1,
]
# Assign the data for each cell of the row
for col_num, cell_value in enumerate(row, 1):
cell = worksheet.cell(row=row_num, column=col_num)
cell.value = cell_value
workbook.save(response)
return response
Но я также хотел бы преобразовать сгенерированный .xlsx в файл .pdf.
Я не знаю, какой подход лучше всего выбрать :
- Прямое сохранение ответа в виде файла .pdf
- Подождите, пока xlsx будет создан и сохранен, а затем конвертируйте его в pdf-файл.
Я пытался использовать :
subprocess.run(["libreoffice", "--headless", "--convert-to", "pdf", response])
после строки
workbook.save(response)
но это дало мне эту ошибку :
expected str, bytes or os.PathLike object, not HttpResponse
Спасибо за помощь