JS实现CSV下载的方式

1.csv前端处理并下载

前端处理并下载CSV,一般是通过AJAX请求,取回服务器端的数据(多为json形式的字符串)后,利用js将json转为csv格式后进行下载。

  • 优点
    使用Ajax, 可以监控response相应, 便于各种异常处理。
  • 缺点
    jquery的ajax对后台传回的csv数据以UTF-8进行编码,导致对日开发中例如用Window-31J对csv进行编码后,回到前台的数据会产生乱码。
    ※后台不用UTF-8编码是因为客户需要下载的csv可以用日文版excel直接打开
   // 声明的json对象 
   // 这里为了便于说明,直接声明了json对象,
   // 链接的sample中有直接从ajax取json的例子,需要的可以去参考
	var studentList = [
		{
   
			"id":"1",
			"name":"xiaoming",
			"age":"23"
		},...
   ];
    // 将json转换为csv格式
    // 具体的转换方式在链接的custom.js中有具体实现,可以参照
    // 或者大家可以去网上自行搜索转换lib
    // 例如:https://github.com/boychina/json2csv
    var csv = jsonToCsv(studentList);
    
    // csv下载实现(chrome,fireFox)
    function csvDownload(content, filename) {
   
       	// 创建一个a元素
       	var hrefLink = document.createElement('a');
       	// 赋予download属性(html5新增属性)
       	hrefLink.download = filename;
       	hrefLink.style.display = 'none';

        // 利用Blob将字符串转为二进制,参数必须为数组
       	var blob = new Blob([csv]);
       	// 将下载链接指向创建的blob url。
       	// url例:blob:null/f046752e-238e-4bf7-ba13-647a2cae8e84
       	hrefLink.href = URL.createObjectURL(blob);
        // 这里的appendChild和removeChild是为了兼容FireFox而添加的
       	document.body.appendChild(hrefLink);
       	hrefLink.click();
        document.body.removeChild(hrefLink);
    }
       
    // msSaveOrOpenBlob为IE独有的属性,支持下载
   	if (navigator.msSaveOrOpenBlob) {
   
   		  // IE调用msSaveorOpenBlob方法下载文件
   		button.addEventListener('click', function() {
   
             // 文件名
             var fileName = "csv_download_";
             var date = new Date(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值