0%

使用 JavaScript 导出 CSV 文件

在现代浏览器中已经逐渐支持 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格式文件