发送文件作为响应而不是文件路径。如何在python中发送xlsx文件作为响应

时间:2018-12-13 11:46:12

标签: python django python-3.x mysql-python

我已从mysqldb中读取数据并写入xlsx文件,并使用xlsxwriter存储到目录中。现在我想以xlsx文件而不是文件路径的形式发送响应。能否请任何人帮我做到这一点。

  filter_data = (('Shankar','100','Good'),('Sekar','20','Bad'),('Sugu','100','Good'))
  workbook = xlsxwriter.Workbook('report.xlsx')
  worksheet = workbook.add_worksheet()
  for row, x in enumerate(filter_data):
    for col, y in enumerate(x):
      worksheet.write(row, col, str(y))
  workbook.close()

我想在python中将响应作为xlsx文件发送。我尝试过如下

response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="report.xlsx"'
return response

我使用了上面的陈述。但是出现以下错误 未返回HttpResponse对象。而是返回None。

2 个答案:

答案 0 :(得分:0)

HttpResponse中,您应该提供要发送给用户的文件内容:

response = HttpResponse(content=content, content_type='application/ms-excel')

content是您要发送给用户下载的文件对象或内容的字节序。

答案 1 :(得分:0)

尝试

with open("path/report.xlsx", "rb") as excel:
     data = excel.read()
response = HttpResponse(data, content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="report.xlsx"'
return response