在 .NET 开发中,Excel 与 JSON 的格式转换是数据交互的高频需求。Excel 适合人工编辑与可视化展示,JSON 则是跨平台 API 通信、系统集成的标准格式。本文将详细讲解如何使用免费 .NET 库快速实现 Excel 到 JSON 的自动化转换,无需依赖 Microsoft Office,附完整代码与场景扩展。
文章目录
-
- 一、环境准备
-
- [1. 安装免费 .NET 库](#1. 安装免费 .NET 库)
- [2. 额外依赖](#2. 额外依赖)
- [二、Excel 转 JSON 完整实现(C# 示例)](# 示例))
-
- [1. 需求场景说明](#1. 需求场景说明)
- [2. 完整代码实现](#2. 完整代码实现)
- [3. 转换结果示例](#3. 转换结果示例)
- [三、核心 API 与参数解析](#三、核心 API 与参数解析)
-
- [1. Workbook 核心方法](#1. Workbook 核心方法)
- [2. ExportDataTable 参数说明](#2. ExportDataTable 参数说明)
- [3. JSON 序列化配置优化](#3. JSON 序列化配置优化)
- 四、扩展:多工作表批量转换
一、环境准备
1. 安装免费 .NET 库
Free Spire.XLS for .NET 是一款轻量级的 Excel 处理库,可通过NuGet 快速安装,两种方式任选:
-
方式1:NuGet包管理器界面
右键项目 → 「管理NuGet程序包」→ 搜索「FreeSpire.XLS」→ 点击「安装」 -
方式2:Package Manager Console 命令
打开控制台,输入以下命令并回车:Install-Package FreeSpire.XLS注意免费版限制,适用于小型项目。
2. 额外依赖
JSON 序列化需借助 Newtonsoft.Json(Json.NET),同样通过NuGet 安装:
Install-Package Newtonsoft.Json
二、Excel 转 JSON 完整实现(C# 示例)
1. 需求场景说明
假设我们有一个用户信息 Excel 文件(UserData.xlsx),结构如下:

目标:读取该 Excel 数据,转换为结构化 JSON,保留数据类型一致性。
2. 完整代码实现
csharp
using System;
using System.Data;
using Newtonsoft.Json;
using Spire.Xls;
namespace ExcelToJsonDemo
{
class Program
{
static void Main(string[] args)
{
try
{
// 1. 加载Excel文件
string excelFilePath = "UserData.xlsx";
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath); // 无需Office依赖,直接加载文件
// 2. 指定目标工作表(按索引或名称选择)
Worksheet worksheet = workbook.Worksheets[0]; // 第一个工作表(索引从0开始)
// 3. 将工作表数据导出为DataTable(核心步骤)
DataTable dataTable = worksheet.ExportDataTable();
// 4. 自定义JSON序列化配置(优化格式与数据类型)
JsonSerializerSettings settings = new JsonSerializerSettings
{
Formatting = Formatting.Indented, // 格式化输出(换行+缩进)
DateFormatString = "yyyy-MM-dd", // 日期格式统一
NullValueHandling = NullValueHandling.Ignore // 忽略空值字段
};
// 5. 将DataTable序列化为JSON字符串
string jsonResult = JsonConvert.SerializeObject(dataTable, settings);
// 6. 保存JSON文件(或直接用于API传输)
string jsonFilePath = @"E:\Files\UserData.json";
System.IO.File.WriteAllText(jsonFilePath, jsonResult, System.Text.Encoding.UTF8);
Console.WriteLine("Excel转JSON成功!JSON文件路径:" + jsonFilePath);
}
catch (Exception ex)
{
Console.WriteLine("转换失败:" + ex.Message);
}
}
}
}
3. 转换结果示例
生成的 UserData.json 文件内容如下,数据类型与 Excel 保持一致:

三、核心 API 与参数解析
1. Workbook 核心方法
LoadFromFile(string filePath):加载 Excel 文件,自动识别 .xls/.xlsx格式Worksheets[index]:获取工作表集合,索引从0开始
2. ExportDataTable 参数说明
Worksheet.ExportDataTable(): 将指定工作表导出为 DataTable。该方法提供了多组重载,适配不同的导出需求,具体参考其 API 说明
3. JSON 序列化配置优化
Formatting.Indented:生成可读性强的格式化 JSON,便于调试DateFormatString:统一日期格式(避免默认的 ISO 格式适配问题)NullValueHandling.Ignore:过滤空值字段,精简 JSON 体积
四、扩展:多工作表批量转换
若 Excel 包含多个工作表,可通过遍历 Worksheets 集合实现批量转换:
csharp
foreach (Worksheet sheet in workbook.Worksheets)
{
if (sheet.Visibility == WorksheetVisibility.Hidden) // 只处理可见工作表
{
DataTable dt = sheet.ExportDataTable();
string json = JsonConvert.SerializeObject(dt, settings);
// 按工作表名称保存JSON文件
System.IO.File.WriteAllText($@"E:\{sheet.Name}.json", json);
}
}
以上示例演示了如何通过 C# 将 Excel 转换为 JSON,无需依赖 Office 环境,代码简洁高效,适合各类.NET项目的数据交互场景。核心流程可概括为:加载 Excel 文件 → 读取工作表 → 导出 DataTable → JSON 序列化 → 保存/传输,全程仅需5步即可完成。
通过本文的步骤指导与代码示例,开发者可快速集成该功能,同时支持多工作表、特殊数据类型、空值处理等复杂场景,大幅提升数据转换效率。