如何通过exceljs或Node.js Excel库直接将JSON转换为Excel文件?
直接将JSON转换为Excel(Node.js实现)
问题背景
我需要维护一段代码,里面用低效的while循环遍历JSON数组生成Excel,循环逻辑冗余怪异。示例JSON数据如下:
[ { "ID": 1, "NAME": "A" }, { "ID": 3, "NAME": "D" }, { "ID": 5, "NAME": "etc" } ]
目标是生成包含对应表头和数据的Excel表格:
ID | NAME --------- 1 | A 3 | D 5 | etc
希望通过ExcelJS或其他Node.js Excel库实现直接转换,避免冗余循环。
解决方案
用ExcelJS实现(简洁无冗余循环)
ExcelJS没有一键转换的API,但可以用更高效的方式实现,完全替代低效while循环:
- 从JSON数组第一个对象提取键作为表头
- 批量添加数据行,无需手动遍历每个字段
代码示例:
const ExcelJS = require('exceljs'); const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); // 示例JSON数据 const jsonData = [ { ID: 1, NAME: 'A' }, { ID: 3, NAME: 'D' }, { ID: 5, NAME: 'etc' } ]; // 设置表头 const headers = Object.keys(jsonData[0]); worksheet.addRow(headers); // 批量插入数据行 jsonData.forEach(item => { worksheet.addRow(Object.values(item)); }); // 保存Excel文件 workbook.xlsx.writeFile('output.xlsx') .then(() => console.log('Excel文件生成成功')) .catch(err => console.error('生成失败:', err));
更简便的一键转换库
如果想要更轻量化的实现,可以选择以下专门的库:
1. xlsx(SheetJS)
SheetJS的json_to_sheet方法会自动处理表头和数据映射,代码极简:
const XLSX = require('xlsx'); const jsonData = [ { ID: 1, NAME: 'A' }, { ID: 3, NAME: 'D' }, { ID: 5, NAME: 'etc' } ]; // JSON转工作表 const worksheet = XLSX.utils.json_to_sheet(jsonData); // 创建工作簿并添加工作表 const workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); // 保存文件 XLSX.writeFile(workbook, 'output.xlsx');
2. json2xls
专为JSON转Excel设计的库,API直观:
const json2xls = require('json2xls'); const fs = require('fs'); const jsonData = [ { ID: 1, NAME: 'A' }, { ID: 3, NAME: 'D' }, { ID: 5, NAME: 'etc' } ]; // 生成Excel二进制数据 const xlsBuffer = json2xls(jsonData); // 写入文件 fs.writeFileSync('output.xlsx', xlsBuffer, 'binary');
内容的提问来源于stack exchange,提问作者pmiranda
相关产品推荐
相关产品推荐

