在Django站点上,我想根据数据库中的一些数据生成一个Excel文件.

我在考虑使用xlwt,但它只有一种将数据保存到文件的方法.如何将文件获取到HttpResponse对象?或者你知道更好的图书馆吗?

我也找到了这个snippet,但它不能满足我的需要.我想要的只是一种将流从xlwt对象获取到响应对象的方法(不写入临时文件)

推荐答案

整洁的包装!我不知道这件事

根据文档,save(filename_or_stream)方法要么使用文件名保存,要么使用类似文件的流写入.

而Django响应对象恰好是一个类似文件的流!所以只要做xls.save(response)就行了.使用ReportLab查看Django文档中的大约generating PDFs个,可以看到类似的情况.

edit:(改编自ShawnMilo的 comments ):

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')

Django相关问答推荐

Django逆转ForeignKey返回无

在 Django Rest Framework 视图中,request.user 是在请求​​到达视图之前进行数据库调用还是数据库调用发生?

如何在 gunicorn conf 文件中指定 uvicorn 工作人员

Django 长时间运行带有线程/处理的异步任务

django 创建多种类型用户的最佳方法

在 PyCharm 中运行 Django 测试

相关字段查找无效:​​icontains

如何按名称设置 django 模型字段?

URL命名空间的一个真实例子

在 Django 中使用 AuthenticationForm

对 django 的 Http Delete 请求返回 301

Django 国际化语言代码

Django将HttpResponseRedirect返回到带有参数的url

如何获取经过身份验证的用户列表?

django - 使用 get_or_create 自动创建用户时设置用户权限

如何在 Django 中创建一个非空的 CharField?

Django 多项 Select 字段/复选框 Select 多个

Django 在 css 文件中使用背景图像的方法

如何更改模型标签并给它一个自定义名称

如何更改 django 模板中布尔值的打印方式?