C# .NET實(shí)現(xiàn)Excel到JSON的自動(dòng)化轉(zhuǎn)換
在 .NET 開(kāi)發(fā)中,Excel 與 JSON 的格式轉(zhuǎn)換是數(shù)據(jù)交互的高頻需求。Excel 適合人工編輯與可視化展示,JSON 則是跨平臺(tái) API 通信、系統(tǒng)集成的標(biāo)準(zhǔn)格式。本文將詳細(xì)講解如何使用免費(fèi) 庫(kù)快速實(shí)現(xiàn) Excel 到 JSON 的自動(dòng)化轉(zhuǎn)換,無(wú)需依賴(lài) Microsoft Office,附完整代碼與場(chǎng)景擴(kuò)展。
一、環(huán)境準(zhǔn)備
1. 安裝免費(fèi) .NET 庫(kù)
Free Spire.XLS for .NET 是一款輕量級(jí)的 Excel 處理庫(kù),可通過(guò)NuGet 快速安裝,兩種方式任選:
方式1:NuGet包管理器界面
右鍵項(xiàng)目 → 「管理NuGet程序包」→ 搜索「FreeSpire.XLS」→ 點(diǎn)擊「安裝」
方式2:Package Manager Console 命令
打開(kāi)控制臺(tái),輸入以下命令并回車(chē):
Install-Package FreeSpire.XLS
注意免費(fèi)版限制,適用于小型項(xiàng)目。
2. 額外依賴(lài)
JSON 序列化需借助 Newtonsoft.Json(Json.NET),同樣通過(guò)NuGet 安裝:
Install-Package Newtonsoft.Json
二、Excel 轉(zhuǎn) JSON 完整實(shí)現(xiàn)(C# 示例)
1. 需求場(chǎng)景說(shuō)明
假設(shè)我們有一個(gè)用戶(hù)信息 Excel 文件(UserData.xlsx),結(jié)構(gòu)如下:

目標(biāo):讀取該 Excel 數(shù)據(jù),轉(zhuǎn)換為結(jié)構(gòu)化 JSON,保留數(shù)據(jù)類(lèi)型一致性。
2. 完整代碼實(shí)現(xiàn)
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); // 無(wú)需Office依賴(lài),直接加載文件
// 2. 指定目標(biāo)工作表(按索引或名稱(chēng)選擇)
Worksheet worksheet = workbook.Worksheets[0]; // 第一個(gè)工作表(索引從0開(kāi)始)
// 3. 將工作表數(shù)據(jù)導(dǎo)出為DataTable(核心步驟)
DataTable dataTable = worksheet.ExportDataTable();
// 4. 自定義JSON序列化配置(優(yōu)化格式與數(shù)據(jù)類(lèi)型)
JsonSerializerSettings settings = new JsonSerializerSettings
{
Formatting = Formatting.Indented, // 格式化輸出(換行+縮進(jìn))
DateFormatString = "yyyy-MM-dd", // 日期格式統(tǒng)一
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轉(zhuǎn)JSON成功!JSON文件路徑:" + jsonFilePath);
}
catch (Exception ex)
{
Console.WriteLine("轉(zhuǎn)換失?。? + ex.Message);
}
}
}
}
3. 轉(zhuǎn)換結(jié)果示例
生成的 UserData.json 文件內(nèi)容如下,數(shù)據(jù)類(lèi)型與 Excel 保持一致:

三、核心 API 與參數(shù)解析
1. Workbook 核心方法
LoadFromFile(string filePath):加載 Excel 文件,自動(dòng)識(shí)別 .xls/.xlsx格式Worksheets[index]:獲取工作表集合,索引從0開(kāi)始
2. ExportDataTable 參數(shù)說(shuō)明
Worksheet.ExportDataTable(): 將指定工作表導(dǎo)出為 DataTable。該方法提供了多組重載,適配不同的導(dǎo)出需求,具體參考其 API 說(shuō)明
3. JSON 序列化配置優(yōu)化
Formatting.Indented:生成可讀性強(qiáng)的格式化 JSON,便于調(diào)試DateFormatString:統(tǒng)一日期格式(避免默認(rèn)的 ISO 格式適配問(wèn)題)NullValueHandling.Ignore:過(guò)濾空值字段,精簡(jiǎn) JSON 體積
四、擴(kuò)展:多工作表批量轉(zhuǎn)換
若 Excel 包含多個(gè)工作表,可通過(guò)遍歷 Worksheets 集合實(shí)現(xiàn)批量轉(zhuǎn)換:
foreach (Worksheet sheet in workbook.Worksheets)
{
if (sheet.Visibility == WorksheetVisibility.Hidden) // 只處理可見(jiàn)工作表
{
DataTable dt = sheet.ExportDataTable();
string json = JsonConvert.SerializeObject(dt, settings);
// 按工作表名稱(chēng)保存JSON文件
System.IO.File.WriteAllText($@"E:\{sheet.Name}.json", json);
}
}
以上示例演示了如何通過(guò) C# 將 Excel 轉(zhuǎn)換為 JSON,無(wú)需依賴(lài) Office 環(huán)境,代碼簡(jiǎn)潔高效,適合各類(lèi).NET項(xiàng)目的數(shù)據(jù)交互場(chǎng)景。核心流程可概括為:加載 Excel 文件 → 讀取工作表 → 導(dǎo)出 DataTable → JSON 序列化 → 保存/傳輸,全程僅需5步即可完成。
通過(guò)本文的步驟指導(dǎo)與代碼示例,開(kāi)發(fā)者可快速集成該功能,同時(shí)支持多工作表、特殊數(shù)據(jù)類(lèi)型、空值處理等復(fù)雜場(chǎng)景,大幅提升數(shù)據(jù)轉(zhuǎn)換效率。
到此這篇關(guān)于C# .NET實(shí)現(xiàn)Excel到JSON的自動(dòng)化轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)C# Excel轉(zhuǎn)JSON內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
winfrom 在業(yè)務(wù)層實(shí)現(xiàn)事務(wù)控制的小例子
winfrom 在業(yè)務(wù)層實(shí)現(xiàn)事務(wù)控制的小例子,需要的朋友可以參考一下2013-03-03
在C#中調(diào)用Windows防火墻界面的常見(jiàn)方式
在 C# 中調(diào)用 Windows 防火墻界面(基礎(chǔ)設(shè)置或高級(jí)安全設(shè)置),可以使用 進(jìn)程啟動(dòng)(Process.Start) 或 Win32 API 來(lái)實(shí)現(xiàn),所以本文給大家介紹了C#調(diào)用Windows防火墻界面的常見(jiàn)方式,需要的朋友可以參考下2025-11-11

