Django实现按列写入csv文件并提供下载

zip_longest(*)将所有输入的对象行转置为列,返回长度与最长的对象相同的列表,运用此方法,writer对象会将原列表以列的形式写入csv文件。

def test(request):
    from itertools import zip_longest
    list1=[1,2]
    list2=[3,4,5]
    list_head=['list1','list2']
    list_value=[list1,list2]
    export_data = zip_longest(*list_value, fillvalue='')
    # 会在writer对象中将列表以列的形式写入csv文件

    response = HttpResponse(content_type='text/csv')#定义一个HttpResponse,类型是csv
    response['Content-Disposition'] = "attachment;filename=file.csv"#定义返回的信息,以附件方式下载及文件名称;
    import csv
    wr = csv.writer(response)
    wr.writerow(list_head)
    wr.writerows(export_data)

    return response

对于生成数据量不大的文件,可以使用HttpResponse将数据存入内存然后再输出:

  1. response = HttpResponse(content_type='text/csv') 定义一个HttpResponse,类型为csv格式的文件;如果用默认值(html),那么最终会返回html格式的文件。
  2. response['Content-Disposition'] = "attachment;filename=file.csv" attachment表示将此文件作为附件的形式下载,filename=file.csv用来指定csv文件的名字。(注意file.csv不要加引号,有可能输出格式错误

测试:

        输入网址:

 打开文件:

 

 

参考链接:将Python列表写入csv中的列 - 问答 - 腾讯云开发者社区-腾讯云 (tencent.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷吃小孩.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值