Node.js自动化中如何将对象数组导出为CSV文件?
将对象数组转换并保存为CSV文件到当前目录
下面提供两种主流编程语言的实用实现方案,直接适配你的需求:
Python 实现
用Python内置的csv模块即可完成,无需额外依赖:
import csv # 替换成你的对象数组 data = [ {"name": "张三", "age": 25, "city": "北京"}, {"name": "李四", "age": 30, "city": "上海"}, {"name": "王五", "age": 28, "city": "广州"} ] # 提取表头(取第一个对象的键) headers = data[0].keys() # 写入当前目录的output.csv文件 with open("output.csv", "w", newline="", encoding="utf-8") as csv_file: writer = csv.DictWriter(csv_file, fieldnames=headers) writer.writeheader() # 写入表头行 writer.writerows(data) # 批量写入所有数据
- 关键点:
newline=""避免Windows系统下生成的CSV出现空行;encoding="utf-8"确保中文等非ASCII字符正常显示。
Node.js 实现
方案1:使用成熟的CSV处理库(推荐)
先安装依赖包:
npm install csv-stringify
然后编写代码:
const fs = require('fs'); const { stringify } = require('csv-stringify'); // 替换成你的对象数组 const data = [ { name: "张三", age: 25, city: "北京" }, { name: "李四", age: 30, city: "上海" }, { name: "王五", age: 28, city: "广州" } ]; const headers = Object.keys(data[0]); // 转换并写入文件 stringify(data, { header: true, columns: headers }, (err, csvOutput) => { if (err) throw err; fs.writeFileSync('./output.csv', csvOutput, 'utf-8'); });
方案2:手动拼接CSV(无需额外依赖)
如果不想安装第三方包,可以手动处理字段拼接,注意给包含逗号的字段加双引号:
const fs = require('fs'); const data = [ { name: "张三", age: 25, city: "北京" }, { name: "李四", age: 30, city: "上海" }, { name: "王五", age: 28, city: "广州" } ]; const headers = Object.keys(data[0]); // 构建CSV内容 let csvContent = headers.join(',') + '\n'; data.forEach(item => { // 给每个字段加双引号,避免字段含逗号时出错 const rowValues = headers.map(key => `"${item[key]}"`); csvContent += rowValues.join(',') + '\n'; }); // 写入当前目录的文件 fs.writeFileSync('./output.csv', csvContent, 'utf-8');
内容的提问来源于stack exchange,提问作者noonenine
相关产品推荐
相关产品推荐

