图像

Django 导出excel

Django导出excel有多种方法,比如XlsxWriterdjango-import-export
这两个app已经可以满足大多数的业务需要,但是针对特殊的表格或图表,这两个就不能满足要求。

这个时候,其实你会想到用Microsoft的Office SDK或者com技术,这些也能满足您的部分要求,但是比较麻烦。
其实有更简单的办法,本文采用的方法如下,我直接上代码。

@login_required
def export_basicinfo(request, basicinfo_id):
    basicinfo = get_object_or_404(BasicInfo, pk=basicinfo_id)
    response = render(request,"project/export_basicinfo.htm", {
            'b': basicinfo
        })
    filename = "项目信息表(%s).xls" % (basicinfo.pb_name)
    response['Content-Disposition'] = 'attachment;filename=' + filename
    response['Content-Type'] = 'application/vnd.ms-excel;charset=UTF-8'
    return response

这里其实主要是利用excel和html之间的内部关系,它们本身可以互相转换,而我们借助html模板可以轻松定制自己的excel输出模板,这样是最灵活的方式,这个不仅适合于python,也适合其它任何编程语言,甚至js。
如果你非要纠结这个原理,可以用office软件导出excel的html格式去看看,你就会明白的。我建议你用linux的LibreOffice生成看看,这个是符合国际open office标准的软件,也有windows版本的。

发表评论