用 Node.js 生成 csv 文件
想使用Node.js来生成 csv 文件的话,可以自己拼接好内容后通过fs.writeFile来写入一个文件。不过还是有个问题,如果有中文字符的还是会出现乱码的情况。
接下来就是介绍一下两个库可以解决我们的问题,一个是json2csv 可以通过json的数据去生成csv文件的内容,然后在fs.writeFile,另外一个库则是iconv-lite用来把内容的编码转换为GBK格式,这样一来就能够解决中文乱码的问题。
还有一个值得一提的,就是有其他的小伙伴会用iconv这个库,不过我发现我使用npm还是cnpm都安装不上,所以就使用了iconv-lite这个库。可以注意一下这个问题。
贴一个实例:
const json2csv = require('json2csv').parse;
const iconv = require('iconv-lite');
const fs = require('fs');
function createCsv(namePath, myCars, fields) {
return new Promise((resolve, reject) => {
const csv = json2csv(myCars, fields);
const newCsv = iconv.encode(csv, 'GBK'); // 转编码
fs.writeFile(namePath, newCsv, function (err) {
if (err) {
reject();
throw err;
}
console.log('create csv');
resolve();
});
});
}
module.exports = {
createCsv,
};
// const fields = ['recipientName', 'shipCity', 'shipState', 'shipPostalCode'];
// const myCars = [{
// "recipientName": "是的",
// "shipCity": 40000,
// "shipState": "blue",
// "shipPostalCode": "blue"
// }];
// createCsv('./namePath.csv', myCars, fields)