如何修改fast-csv代码为CSV文件正确添加表头?
问题原因分析
- 缺少
fs模块引入,直接调用fs.createWriteStream会抛出未定义错误 fast-csv的csv.write()方法参数顺序错误:第一个参数为待写入的数据集数组,第二个参数才是包含headers在内的配置项- 没有传入现有的CSV数据内容,自然无法生成完整的带表头文件
正确实现代码
场景1:直接生成带表头的全新CSV文件
如果不需要保留原有文件的写入历史,直接把已知数据生成带表头的新文件,可以用以下代码:
const fs = require('fs'); const csv = require('fast-csv'); // 整理现有数据为数组格式 const data = [ ['nina', 24], ['sarah', 25] ]; const ws = fs.createWriteStream('./file.csv'); // 第一个参数传入数据集,第二个参数传入表头配置 csv.write(data, { headers: ['name', 'age'] }) .pipe(ws); // 可选:监听写入完成事件 ws.on('finish', () => { console.log('CSV写入完成,已成功添加表头'); });
场景2:给已有内容的旧CSV文件追加表头
如果你的CSV文件已经存在原有内容,需要给它加上表头再保存,可以使用先读取旧文件内容、再拼接表头写入的逻辑:
const fs = require('fs'); const csv = require('fast-csv'); const rows = []; // 先读取原有CSV的内容 fs.createReadStream('./file.csv') .pipe(csv.parse()) .on('data', row => rows.push(row)) .on('end', () => { // 读取完成后写入新内容,带上表头配置 const ws = fs.createWriteStream('./file.csv'); csv.write(rows, { headers: ['name', 'age'] }) .pipe(ws); });
最终生成效果
运行代码后得到的CSV内容如下:
name,age nina,24 sarah,25
内容的提问来源于stack exchange,提问作者Cissus
相关产品推荐
相关产品推荐

