首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django excel xlwt

django excel xlwt
EN

Stack Overflow用户
提问于 2009-05-19 15:04:14
回答 6查看 21.2K关注 0票数 35

在django站点上,我想根据数据库中的一些数据生成一个excel文件。

我正在考虑使用xlwt,但它只有一种将数据保存到文件的方法。如何将文件放到HttpResponse对象中?或者你知道更好的库吗?

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-19 15:09:44

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

根据文档,save(filename_or_stream)方法要么接受保存的文件名,要么接受类似文件的流进行写入。

而Django响应对象恰好是一个类似文件的流!所以就做xls.save(response)吧。查看Django文档中关于generating PDFs和ReportLab的内容,可以看到类似的情况。

编辑:(改编自ShawnMilo的评论):

代码语言:javascript
复制
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对象并以

代码语言:javascript
复制
return xls_to_response(xls,'foo.xls')
票数 56
EN

Stack Overflow用户

发布于 2010-01-28 14:05:15

*更新:django-excel-template不再维护,请尝试使用Marmir http://brianray.github.com/mm/

仍在开发中,因为我键入这,但http://code.google.com/p/django-excel-templates/ Django excel模板项目的目的是做你所要求的。

具体来看这些测试。下面是一个简单的例子:

代码语言:javascript
复制
#
from django_excel_templates import *
from django_excel_templates.color_converter import *
from models import *
from django.http import HttpResponse

def xls_simple(request):

    ## Simple ##
    testobj = Book.objects.all()

    formatter = ExcelFormatter()
    simpleStyle = ExcelStyle(vert=2,wrap=1)
    formatter.addBodyStyle(simpleStyle)
    formatter.setWidth('name,category,publish_date,bought_on',3000)
    formatter.setWidth('price',600)
    formatter.setWidth('ebook',1200)
    formatter.setWidth('about',20000)

    simple_report = ExcelReport()
    simple_report.addSheet("TestSimple")
    filter = ExcelFilter(order='name,category,publish_date,about,bought_on,price,ebook')
    simple_report.addQuerySet(testobj,REPORT_HORZ,formatter, filter)

    response = HttpResponse(simple_report.writeReport(),mimetype='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename=simple_test.xls'
    return response
票数 6
EN

Stack Overflow用户

发布于 2009-05-19 19:17:55

您可以将XLS文件保存到一个类似于文件的StringIO对象。

您可以在响应中返回StringIO对象的getvalue()。请务必添加标题以将其标记为可下载的电子表格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/883313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档