在现代浏览器中已经逐渐支持 JavaScript 对文件的各种操作,以前必须由后端完成的各种事情也渐渐地可以由前端来完成。传统的 CSV 文件的下载一般都是由后端直接生成 URL,前端访问此 URL来完成下载。现在,这一工作可以完全由前端来负责完成。
数组转化为 CSV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| var data = [ ["张朋", "男", new Date("1994-02-02")], ["李艳", "女", new Date("1993-03-03")], ];
function processRow (row) { var finalVal = ''; for (var j = 0; j < row.length; j++) { var innerValue = row[j] === null ? '' : row[j].toString(); if (row[j] instanceof Date) { innerValue = row[j].toLocaleString(); }; var result = innerValue.replace(/"/g, '""'); if (result.search(/("|,|\n)/g) >= 0) result = '"' + result + '"'; if (j > 0) finalVal += ','; finalVal += result; } return finalVal; };
var csvString = data.map(function(item){return processRow(item)}).join("\n");
|
CSV 数据转化为 bolb 文件
1 2
| //前置的"\uFEFF"为“零宽不换行空格”,可处理中文乱码问题 var blob = new Blob(["\uFEFF" + csvString], { type: 'text/csv;charset=gb2312;' });
|
获取文件地址并下载
1 2 3 4
| var a = document.createElement('a'); a.download = 'name.csv';//这里替换为你需要的文件名 a.href = URL.createObjectURL(blob); a.click();
|
参考链接:
How to export JavaScript array info to csv (on client side)?
网页前端导出CSV,Excel格式文件