在 .net 开发中,excel 与 json 的格式转换是数据交互的高频需求。excel 适合人工编辑与可视化展示,json 则是跨平台 api 通信、系统集成的标准格式。本文将详细讲解如何使用免费 库快速实现 excel 到 json 的自动化转换,无需依赖 microsoft office,附完整代码与场景扩展。
一、环境准备
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. 完整代码实现
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 集合实现批量转换:
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步即可完成。
通过本文的步骤指导与代码示例,开发者可快速集成该功能,同时支持多工作表、特殊数据类型、空值处理等复杂场景,大幅提升数据转换效率。
到此这篇关于c# .net实现excel到json的自动化转换的文章就介绍到这了,更多相关c# excel转json内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论