108:生成和下载csv文件

生成CSV文件:

有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来。以下将讲解如何生成CSV文件。

生成小的CSV文件:

这里将用一个生成小的CSV文件为例,来把生成CSV文件的技术要点讲到位。我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去。示例代码如下:

from django.http import HttpResponse, JsonResponse
import json, csv

def small_csv(request):
    response = HttpResponse(content_type=‘text/csv‘)
    response[‘Content-Disposition‘] =  "attachment;filename=‘userinfo.csv‘"
    my_write = csv.writer(response)
    my_write.writerow([‘username‘,‘age‘])
    my_write.writerow([‘tom‘,‘21‘])
    my_write.writerow([‘jack‘,‘22‘])
    return response

这里再来对每个部分的代码进行解释:

  • 我们在初始化HttpResponse的时候,指定了Content-Type为text/csv,这将告诉浏览器,这是一个csv格式的文件而不是一个HTML格式的文件,如果用默认值,默认值就是html,那么浏览器将把csv格式的文件按照html格式输出,这肯定不是我们想要的。
  • 第二个我们还在response中添加一个Content-Disposition头,这个东西是用来告诉浏览器该如何处理这个文件,我们给这个头的值设置为attachment;,那么浏览器将不会对这个文件进行显示,而是作为附件的形式下载,第二个filename="somefilename.csv"是用来指定这个csv文件的名字。
  • 我们使用csv模块的writer方法,将相应的数据写入到response中。

csv文件定义成模板:

我们还可以将csv格式的文件定义成模板,然后使用Django内置的模板系统,并给这个模板传入一个Context对象,这样模板系统就会根据传入的Context对象,生成具体的csv文件。示例代码如下:

模板文件:

# 文件路径是:工程template目录下:
{% for row in rows %}{{ row.0 }},{{ row.1 }}
{% endfor %}

视图函数:

def template_csv(request):
    resp = HttpResponse(content_type=‘text/csv‘)
    resp[‘Content-Disposition‘] = "attachment;filename=‘templateinfo.csv‘"
    context = {
        ‘rows‘:
            [
                [‘username‘, ‘age‘],
                [‘bob‘,19],
                [‘marry‘, 20],
            ]
    }
    template =loader.get_template(‘template.txt‘)
    csv_template = template.render(context)
    resp.content = csv_template
    return resp

原文地址:https://www.cnblogs.com/zheng-weimin/p/10415876.html

时间: 2024-08-05 20:29:01

108:生成和下载csv文件的相关文章

108.生成和下载csv文件

生成CSV文件 有时候我们做的网站,需要将一些数据,生成一个csv文件返回浏览器,并且是作为附件的形式下载下来. 生成小的csv文件: 生成一个小的csv文件,我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去.==采用python内置的csv模块创建csv文件示例代码如下:== from .models import User import csv from django.template import loader, Context d

使用PHP生成并导出CSV文件

CSV文件是以纯文本形式存储的,一般以逗号为分隔符.这里主要简单介绍下如何导出CSV文件. 一.浏览器导出CSV文件格式 /** * 导出CSV文件 */ function exportCsv() { // 需要导出的内容 $data = [ ['name' => '张三', 'score' => '80'], ['name' => '李四', 'score' => '90'], ['name' => '王五', 'score' => '60'], ]; // 文件名,

利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码

利用php CI force_download($filename, $data) 下载.csv 文件解决文件名乱码,文件内容乱码.做了很久终于知道了很好的解决方案. 1.加载辅助函数 $this->load->helper('download'); //下载辅助函数 $this->load->helper('string'); //字符编码转换辅助翻书 2.force_download($filename, $data)通过它的代码可以知道$data 必须是字符串,如果不是字符串

下载CSV文件到本机(SAP_CONVERT_TO_TEX_FORMAT)

CSV文件是逗号分隔符格式的文件.将内表数据下载成CSV文件到本机上要先将内表中的数据通过函数SAP_CONVERT_TO_TEX_FORMAT转换成CSV格式,然后再下载到本机. REPORT z_download_csv. TYPE-POOLS: truxs. *&---------------------------------------------------------------------* *& Data Types *&---------------------

使用JavaScript下载csv文件

前端可以使用JavaScript在客户端下载包含页面数据的文件,这里以下载CSV格式文件为例,代码如下: function downloadData(data, filename, type) { var file = new Blob(["\ufeff" + data], { type: type }); if (window.navigator.msSaveOrOpenBlob) // IE10+ window.navigator.msSaveOrOpenBlob(file, fi

将php数据下载csv文件

<?php $sales = array( array( 'Northeast', '2005-01-01', '2005-02-01', 12.54 ), array( 'Northwest', '2005-01-01', '2005-02-01', 546.33 ), array( 'Southeast', '2005-01-01', '2005-02-01', 93.26 ), array( 'Southeast', '2005-01-01', '2005-02-01', 945.21 )

Windows下python3生成UTF8的CSV文件和sha256sum踩坑记录

CSV的坑 在Ubuntu下是简单的写入完事 import csv ... with open(filename, 'w') as output: f = csv.writer(output) f.writerow(results[0].keys()) .在win7下, 用msys2环境执行同一个python脚本, 发现生成的csv有两个问题: 1)有空行, 2)编码变成了GB2312 关于空行的问题, 百度的结果都是open(filename, 'wb')来解决, 但是在python3下会报

django生成CSV文件

生成CSV和Excel文件:有时候我们做的网站,需要将一些数据导出到文件中以方便统计,在导出文件类型中生成CSV文件或者是Excel文件是常用的方式,导出的CSV文件或者Excel文件将以附件的方式下载下来,以下将讲解如何生成CSV文件. 生成小的CSV文件:我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去,首先来介绍一下把数据写入到CSV文件的一种方法: import csv with open('abc.csv') as fp: wr

记一次java生成csv文件乱码的解决过程 (GB2312编码)

系统:win7 (格式:中文(简体,中国)) 工具:Eclipse (默认编码utf-8) 服务两个:[restful接口]  和 [服务*** server]. 场景:[服务*** server]多次调用[restful接口],每次[restful接口]会返回一个生成好的csv文件内容.[服务*** server]将每次[restful接口]返回的csv内容保存成一个csv文件.并将生成的多个csv文件打包成一个zip压缩包. [restful接口]:根据一组数据生成csv文件 1. java