Объект XlsxWriter сохраняет как HTTP-ответ для создания загрузки в Django

Объект XlsxWriter сохраняет как HTTP-ответ для создания загрузки в Django?

  • Графики из Excel в PowerPoint с Python
  • pandas xlsxwriter, заголовок форматирования
  • как форматировать определенные ячейки в excel с помощью пакета xlsx в python
  • Использование xlsxwriter в Google App Engine для Python
  • Применить формат к ячейке после записи в XlsxWriter
  • Примените стили при экспорте в «xlsx» в pandas с помощью XlsxWriter
  • Используя Python, напишите файл Excel со столбцами, скопированными из другого файла Excel
  • Как писать / обновлять данные в ячейках существующей рабочей книги XLSX с помощью xlsxwriter в python
  • 3 Solutions collect form web for “Объект XlsxWriter сохраняет как HTTP-ответ для создания загрузки в Django”

    Я думаю, вы спрашиваете о том, как создать файл excel в памяти с помощью xlsxwriter и вернуть его через HttpResponse . Вот пример:

     try: import cStringIO as StringIO except ImportError: import StringIO from django.http import HttpResponse from xlsxwriter.workbook import Workbook def your_view(request): # your view logic here # create a workbook in memory output = StringIO.StringIO() book = Workbook(output) sheet = book.add_worksheet('test') sheet.write(0, 0, 'Hello, world!') book.close() # construct response output.seek(0) response = HttpResponse(output.read(), mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") response['Content-Disposition'] = "attachment; filename=test.xlsx" return response 

    Надеюсь, это поможет.

    Небольшое обновление для ответа @alecxe для Python 3 ( io.BytesIO вместо StringIO.StringIO ) и Django> = 1.5 ( content_type вместо mimetype ), с полной сборкой файлов в памяти, которая с тех пор была реализована @jmcnamara ( { 'in_memory': True} )!
    Вот полный пример:

     import io from django.http.response import HttpResponse from xlsxwriter.workbook import Workbook def your_view(request): output = io.BytesIO() workbook = Workbook(output, {'in_memory': True}) worksheet = workbook.add_worksheet() worksheet.write(0, 0, 'Hello, world!') workbook.close() output.seek(0) response = HttpResponse(output.read(), content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") response['Content-Disposition'] = "attachment; filename=test.xlsx" return response 

    Когда дело доходит до Django, вы даже можете обойтись без StringIO shenanigans StringIO . HttpResponse ведет себя так же, как StringIO в этом отношении:

     from django.http import HttpResponse from xlsxwriter.workbook import Workbook def your_view(request): # your view logic here # create the HttpResponse object ... response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response['Content-Disposition'] = "attachment; filename=test.xlsx" # .. and pass it into the XLSXWriter book = Workbook(response, {'in_memory': True}) sheet = book.add_worksheet('test') sheet.write(0, 0, 'Hello, world!') book.close() return response 

    Добавление: вам нужно указать {'in_memory': True} или вы можете получить HttpResponse has no attribute seek() . Спасибо @Jeb

    Python - лучший язык программирования в мире.