JSON 转 Excel 完整指南 - XLSX 转换技巧与实战(2026)

1348 字
7 分钟
JSON 转 Excel 完整指南 - XLSX 转换技巧与实战(2026)

📖 JSON 转 Excel 完全指南#

Excel 是最常用的办公软件,将 JSON 转换为 Excel 格式可以让数据更易于分享和分析。本指南将详细介绍所有转换技巧和最佳实践。


🎯 为什么选择 Excel 格式?#

Excel 的优势#

  • ✅ 普及率高:几乎所有办公人员都会使用
  • ✅ 功能强大:支持公式、图表、数据透视表
  • ✅ 易于分享:标准的办公文档格式
  • ✅ 可视化好:格式化、条件格式、图表

使用场景#

  1. 办公报表:销售报表、财务报表、运营报表
  2. 数据分享:与同事、客户、合作伙伴共享数据
  3. 数据分析:使用 Excel 函数、透视表分析
  4. 数据导入:导入到其他系统(ERP、CRM)

📝 Excel 文件格式#

常见格式#

格式说明适用场景
XLSXExcel 2007+推荐使用
XLSExcel 97-2003旧系统兼容
CSV纯文本简单数据交换
ODSOpenDocumentLibreOffice

推荐:XLSX 格式#

// XLSX 优势
- 支持样式和格式
- 支持公式
- 支持多个工作表
- 文件体积小(压缩格式)
- 兼容性好

🛠️ 转换方法详解#

方法 1:在线工具(推荐)#

工具:XingDian JSON to Excel

步骤:

  1. 粘贴 JSON 数据
  2. 配置选项(工作表名、样式)
  3. 点击转换
  4. 下载 XLSX 文件

优势:

  • ✅ 无需编程
  • ✅ 即时预览
  • ✅ 样式美观
  • ✅ 完全免费

方法 2:Node.js 程序#

安装:

Terminal window
npm install json2excel
npm install xlsx

代码示例:

const XLSX = require('xlsx');
function jsonToExcel(jsonData, filename) {
// 创建 workbook
const wb = XLSX.utils.book_new();
// 创建工作表
const ws = XLSX.utils.json_to_sheet(jsonData);
// 添加到 workbook
XLSX.utils.book_append_sheet(wb, ws, '数据');
// 设置列宽
const wscols = Object.keys(jsonData[0]).map(key => ({
wch: 15 // 列宽 15
}));
ws['!cols'] = wscols;
// 保存文件
XLSX.writeFile(wb, filename);
}
// 使用
jsonToExcel(data, 'output.xlsx');

方法 3:Python 程序#

安装:

Terminal window
pip install pandas
pip install openpyxl

代码示例:

import pandas as pd
# 读取 JSON
df = pd.read_json('data.json')
# 导出 Excel
df.to_excel('output.xlsx',
sheet_name='数据',
index=False,
column_width=15)

🎨 样式设置#

表头样式#

// 设置表头样式
const headerStyle = {
fill: {
fgColor: { rgb: "4472C4" } // 蓝色背景
},
font: {
bold: true,
color: { rgb: "FFFFFF" }, // 白色文字
sz: 12
},
alignment: {
horizontal: "center",
vertical: "center"
}
};

数据格式化#

数值格式:

// 货币格式
{ numFmt: '¥#,##0.00' }
// 百分比格式
{ numFmt: '0.00%' }
// 日期格式
{ numFmt: 'yyyy-mm-dd' }

条件格式:

// 大于 1000 显示绿色
// 小于 100 显示红色

自动列宽#

function setColumnWidths(ws, data) {
const colWidths = Object.keys(data[0]).map((key, index) => {
const maxWidth = Math.max(
key.length,
...data.map(row => String(row[key]).length)
);
return { wch: Math.min(maxWidth + 2, 50) }; // 最大 50
});
ws['!cols'] = colWidths;
}

📊 多工作表处理#

场景:创建多个 Sheet#

const wb = XLSX.utils.book_new();
// 销售数据
const salesData = [...];
const salesWS = XLSX.utils.json_to_sheet(salesData);
XLSX.utils.book_append_sheet(wb, salesWS, '销售数据');
// 库存数据
const inventoryData = [...];
const inventoryWS = XLSX.utils.json_to_sheet(inventoryData);
XLSX.utils.book_append_sheet(wb, inventoryWS, '库存数据');
// 汇总数据
const summaryData = [...];
const summaryWS = XLSX.utils.json_to_sheet(summaryData);
XLSX.utils.book_append_sheet(wb, summaryWS, '汇总');
// 保存
XLSX.writeFile(wb, '报表.xlsx');

工作表结构#

报表.xlsx
├── 销售数据
├── 库存数据
├── 汇总
└── 说明

📐 公式应用#

添加公式列#

// 原始数据
const data = [
{ price: 100, quantity: 5 },
{ price: 200, quantity: 3 }
];
// 添加公式
const ws = XLSX.utils.json_to_sheet(data);
// 添加合计列(使用公式)
ws['C1'] = { v: '合计', t: 's' };
ws['C2'] = { f: 'A2*B2' }; // =A2*B2
ws['C3'] = { f: 'A3*B3' };
// 添加总计
ws['C4'] = { f: 'SUM(C2:C3)' };

常用公式#

// 求和
{ f: 'SUM(A2:A100)' }
// 平均值
{ f: 'AVERAGE(B2:B100)' }
// 计数
{ f: 'COUNT(C2:C100)' }
// 最大值
{ f: 'MAX(D2:D100)' }
// IF 判断
{ f: 'IF(E2>100,"达标","未达标")' }

💼 实战案例#

案例 1:销售月报#

需求:生成包含销售数据、图表、汇总的 Excel 报表

数据结构:

{
"month": "2026-01",
"sales": [...],
"summary": {...}
}

Excel 结构:

  • Sheet1: 销售明细
  • Sheet2: 产品分析
  • Sheet3: 地区分析
  • Sheet4: 汇总报表

效果:

  • ✅ 自动生成
  • ✅ 样式美观
  • ✅ 包含公式
  • ✅ 可直接打印

案例 2:员工花名册#

需求:HR 系统导出员工信息到 Excel

字段:

[
'工号', '姓名', '部门', '职位',
'入职日期', '薪资', '绩效评分'
]

样式设置:

  • 表头:蓝色背景,白色粗体
  • 日期:yyyy-mm-dd 格式
  • 薪资:货币格式
  • 绩效:条件格式(A 绿色,C 红色)

案例 3:财务报表#

特点:

  • 多个工作表(资产负债表、利润表、现金流量表)
  • 大量公式计算
  • 严格的格式要求
  • 需要打印友好

⚠️ 常见问题#

Q1: 中文乱码?#

答:XLSX 格式原生支持 UTF-8,不会出现乱码。

Q2: 大数据量怎么办?#

建议:

  • 分批导出(每 Sheet 不超过 10 万行)
  • 使用流式写入
  • 考虑 CSV 格式

Q3: 如何保留公式?#

答:必须使用 XLSX 格式,CSV 不支持公式。

Q4: 样式丢失?#

答:确保使用 XLSX 库正确设置样式。


🎯 最佳实践#

1. 文件命名#

// ✅ 推荐
销售报表_2026-01.xlsx
员工花名册_20260101.xlsx
// ❌ 不推荐
报表.xlsx
数据 1.xlsx

2. 工作表命名#

// ✅ 清晰明了
'2026 年 1 月销售'
'产品分类汇总'
// ❌ 不推荐
'Sheet1'
'数据'

3. 数据验证#

// 添加数据验证
ws['!dataValidations'] = {
'A2:A100': {
type: 'list',
formula: '"选项 1,选项 2,选项 3"'
}
};

4. 打印设置#

// 设置打印区域
ws['!printArea'] = 'A1:G100';
// 设置每页重复标题
ws['!printTitles'] = '$1:$1';

📊 性能对比#

方法速度灵活性学习成本
在线工具⭐⭐⭐⭐⭐⭐⭐⭐⭐
Node.js⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Python⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Excel 手动⭐⭐⭐⭐⭐⭐⭐⭐

🚀 立即使用#

在线工具:XingDian JSON to Excel

特点:

  • ⚡ 快速转换
  • 📊 样式美观
  • 🔒 数据安全
  • 📱 跨平台
  • 💾 多格式支持

相关资源#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-03-29,距今已过 200 天

部分内容可能已过时

公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录