Return openpyxl workbook object as HttpResponse in django. Is it possible?

后端 未结 3 762
你的背包
你的背包 2021-02-07 08:52

I need to provide an excel formatted data from django\'s database to visitors.

The only way I can think of is with these steps:

  1. Extract data from database.
3条回答
  •  眼角桃花
    2021-02-07 09:14

    Since save_virtual_workbook will be obsolete, I used stream insted.

    from openpyxl import Workbook
    from tempfile import NamedTemporaryFile
    
    def exportToExcel(request):
       workbook = Workbook()
       ...
    
       with NamedTemporaryFile() as tmp:
          workbook.save(tmp.name)
          tmp.seek(0)
          stream = tmp.read()
    
       response = HttpResponse(content=stream, content_type='application/ms-excel', )
       response['Content-Disposition'] = f'attachment; filename=ExportedExcel-{datetime.now().strftime("%Y%m%d%H%M")}.xlsx'
       return response
    

提交回复
热议问题