You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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循环:

  1. 从JSON数组第一个对象提取键作为表头
  2. 批量添加数据行,无需手动遍历每个字段

代码示例:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:33:22