一尘不染

django excel xlwt

django

在django网站上,我想基于数据库中的某些数据生成一个excel文件。

我正在考虑使用xlwt,但是它只有一种将数据保存到文件中的方法。如何将文件获取到HttpResponse对象?或者,也许您知道一个更好的图书馆?

我也找到了此代码段,但它不能满足我的需求。我想要的是一种将流从xlwt对象传递到响应对象的方法(无需写入临时文件)


阅读 356

收藏
2020-03-31

共1个答案

一尘不染

整齐的包装!我不知道这个

根据文档,该save(filename_or_stream)方法采用要保存的文件名或要写入的类似文件的流。

而Django响应对象恰好是一个类似文件的流!所以做吧xls.save(response)。查看有关使用ReportLab 生成PDF的Django文档,以了解类似情况。

编辑:(改编自肖恩·米洛的评论):

def xls_to_response(xls, fname):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename=%s' % fname
    xls.save(response)
    return response

然后,从你的视图函数中,只需创建xls对象并完成

return xls_to_response(xls,'foo.xls')
2020-03-31