Excel轻松转JSON:3种高效方法详解(附代码示例)
在数据处理和开发工作中,Excel(.xlsx/.xls)和JSON是两种最常用的文件格式,Excel擅长表格数据的编辑和可视化,而JSON则是Web开发、API交互、数据存储的“通用语言”,将Excel文件转为JSON,能打通数据在不同系统间的流转,提高开发效率,本文将介绍3种实用方法,从手动操作到代码自动化,覆盖不同需求场景。
为什么需要将Excel转为JSON?
在具体操作前,先明确转换的必要性:
- 开发需求:后端接口常以JSON格式返回数据,前端可直接调用,无需手动解析Excel;
- 数据迁移:将Excel中的结构化数据导入数据库(如MongoDB)、NoSQL数据库或云服务;
- 自动化处理:通过脚本批量转换,避免重复手动操作,尤其适合数据量大的场景;
- 跨平台兼容:JSON是轻量级文本格式,几乎被所有编程语言和平台支持。
方法1:手动转换(适合小数据量、零代码用户)
如果只是偶尔转换少量数据,且不熟悉编程,可通过Excel内置功能或在线工具手动完成。
场景1:用Excel“另存为CSV”+ 手动转JSON
Excel原生不支持直接导出JSON,但可通过“CSV”格式作为中间桥梁,再手动整理为JSON。
步骤:
- 打开Excel文件,点击“文件”→“另存为”,选择“CSV UTF-8 (逗号分隔)(*.csv)”格式保存;
- 用记事本或文本编辑器打开CSV文件,数据格式为逗号分隔的文本(如
name,age\nAlice,25\nBob,30); - 手动整理为JSON数组格式,
[ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30} ]缺点:手动整理易出错,数据量大时效率极低,仅适合5条以下数据。
场景2:用在线Excel转JSON工具
推荐工具:ConvertCSV、Excel to JSON Online(搜索“Excel转JSON”即可找到)。
步骤:
- 打开在线工具,上传Excel文件;
- 选择工作表(Sheet)和表头(是否包含第一行作为字段名);
- 点击“Convert”或“转换”,工具会自动生成JSON格式数据,可直接复制或下载。
优点:无需安装软件,操作简单;
缺点:敏感数据需谨慎使用(数据可能上传至第三方服务器),不适合处理机密信息。
方法2:用Python自动化转换(推荐开发者使用)
Python是数据处理领域的“瑞士军刀”,通过pandas和json库,可高效实现Excel转JSON,支持批量处理和自定义格式。
准备工作:安装所需库
pip install pandas openpyxl # openpyxl用于读取.xlsx文件
代码示例:基础转换
假设有一个data.xlsx文件,包含“Sheet1”工作表,数据如下:
| name | age | city |
|---|---|---|
| Alice | 25 | Beijing |
| Bob | 30 | Shanghai |
| Carol | 28 | Guangzhou |
import pandas as pd
import json
# 读取Excel文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1") # 默认读取第一个Sheet
# 转换为JSON(records格式:每行一个字典,键为列名)
json_data = df.to_json(orient="records", force_ascii=False) # force_ascii=False支持中文
# 保存到文件
with open("output.json", "w", encoding="utf-8") as f:
f.write(json_data)
print("转换完成!")
输出结果(output.json):
[
{"name": "Alice", "age": 25, "city": "Beijing"},
{"name": "Bob", "age": 30, "city": "Shanghai"},
{"name": "Carol", "age": 28, "city": "Guangzhou"}
]
高级用法:自定义JSON格式
pandas.to_json()支持多种orient参数,可满足不同需求:
orient="records":数组格式(每行一个字典,最常用);orient="values":仅返回数据值(无列名),适合纯数据场景;orient="index":以行索引为键的字典({"0": {"name": "Alice", ...}});orient="split":包含索引、列名、数据的字典({"index": [0,1,2], "columns": [...], "data": [...]})。
示例:指定字段顺序和日期格式
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
json_data = df.to_json(
orient="records",
force_ascii=False,
date_format="iso", # 日期转为ISO格式(如"2023-10-01")
indent=2 # 缩进2空格,美化输出
)
方法3:用JavaScript处理(前端/Node.js场景)
如果需要在浏览器或Node.js环境中转换(如Web应用直接处理用户上传的Excel),可用xlsx库。
准备工作:安装xlsx库
npm install xlsx # Node.js环境 # 或在HTML中引入CDN(前端): # <script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
代码示例(Node.js)
const XLSX = require('xlsx');
// 读取Excel文件
const workbook = XLSX.readFile('data.xlsx');
const sheetName = workbook.SheetNames[0]; // 获取第一个Sheet名
const worksheet = workbook.Sheets[sheetName];
// 转换为JSON(XLSX.utils.sheet_to_json默认将第一行作为字段名)
const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); // {header:1}返回二维数组,{header:'A'}返回对象数组
// 保存JSON文件(需Node.js环境fs模块)
const fs = require('fs');
fs.writeFileSync('output.json', JSON.stringify(jsonData, null, 2));
console.log('转换完成!');
前端示例(浏览器中处理Excel上传)
<input type="file" id="excelFile" accept=".xlsx,.xls">
<button onclick="convertExcelToJson()">转换</button>
<pre id="result"></pre>
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
<script>
function convertExcelToJson() {
const file = document.getElementById('excelFile').files[0];
const reader = new FileReader();
reader.onload = function(e) {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
const sheetName = workbook.SheetNames[0];
const jsonData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]);
document.getElementById('result').textContent = JSON.stringify(jsonData, null, 2);
};
reader.readAsArrayBuffer(file);
}
</script>
常见问题与注意事项
- 表头处理:确保Excel第一行是字段名(列名),否则转换后JSON的键会为默认值(如"0""1"),或需手动指定
header参数; - 数据类型:Excel中的日期、数字会被自动识别,但需注意JSON中日期格式(建议统一用字符串或时间戳);
- 编码问题:保存JSON时指定
encoding="utf-8",避免中文乱码; - 大数据量:若Excel超过10万行,建议用Python分块处理(
chunksize参数),避免内存溢出; - 安全性:避免使用来源不明的在线工具处理敏感数据,优先选择本地代码转换。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 手动转换 | 无需工具/代码 | 效率低、易出错 | 少量数据、临时使用 |
| 在线工具 | 操作简单、无需安装 | 敏感数据有风险 | 非机密数据、快速转换 |
| Python | 功能强大、可自定义、支持批量 | 需编程基础 | 开发者、自动化处理 |
| JavaScript | 前端/Node.js无缝集成 | 需引入库,浏览器环境依赖 | Web应用 |



还没有评论,来说两句吧...