very-simple-CSV.js 前端解析csv表格为js数组 导出csv文件
因为需要用到解析和导出CSV,找了几个库都不能立马上手,还有些解析有问题,就写了个简单的。
CSV文本与二维数组之间互相转化。
解析需要另外做文件读取,获取到文本内容(CSV是纯文本的表格文件),然后用parse
函数解析;导出也是一样,用encode
函数把二维数组转化为csv文本,然后另外做文件下载。
虽然简单,但是目前使用还没有碰到什么大问题。
代码:
const CSV = {
parse(text) {
return text.replace(/\s*$/, "").split(/\n|\r\n/).map(text => {
let re = [];
while (text.match(/^"|,"/)) {
const match = text.match(/^"|,"/);
const left = text.slice(0, match.index);
const right = text.slice(match.index + match[0].length);
// 如果不是在开头 就处理左边
if (match[0] !== `"`)
re = re.concat(left.split(","));
const closeMatch = right.match(/^(([^"]|"")*)("$|",)/);
const content = closeMatch[1].replace(/""/g, `"`);
re.push(content);
text = right.slice(closeMatch[0].length);
}
if (text)
re = re.concat(text.split(","));
return re;
}
);
},
encode(arr) {
return arr.map(line => {
return line.map(each => `"${String(each).replace(/"/g, `""`)}"`).join(",");
}
).join("\n") + "\n";
}
}