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

目標(biāo):讀取該 Excel 數(shù)據(jù),轉(zhuǎn)換為結(jié)構(gòu)化 JSON,保留數(shù)據(jù)類型一致性。
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); // 無需Office依賴,直接加載文件
// 2. 指定目標(biāo)工作表(按索引或名稱選擇)
Worksheet worksheet = workbook.Worksheets[0]; // 第一個工作表(索引從0開始)
// 3. 將工作表數(shù)據(jù)導(dǎo)出為DataTable(核心步驟)
DataTable dataTable = worksheet.ExportDataTable();
// 4. 自定義JSON序列化配置(優(yōu)化格式與數(shù)據(jù)類型)
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ù)類型與 Excel 保持一致:

三、核心 API 與參數(shù)解析
1. Workbook 核心方法
LoadFromFile(string filePath):加載 Excel 文件,自動識別 .xls/.xlsx格式Worksheets[index]:獲取工作表集合,索引從0開始
2. ExportDataTable 參數(shù)說明
Worksheet.ExportDataTable(): 將指定工作表導(dǎo)出為 DataTable。該方法提供了多組重載,適配不同的導(dǎo)出需求,具體參考其 API 說明
3. JSON 序列化配置優(yōu)化
Formatting.Indented:生成可讀性強(qiáng)的格式化 JSON,便于調(diào)試DateFormatString:統(tǒng)一日期格式(避免默認(rèn)的 ISO 格式適配問題)NullValueHandling.Ignore:過濾空值字段,精簡 JSON 體積
四、擴(kuò)展:多工作表批量轉(zhuǎn)換
若 Excel 包含多個工作表,可通過遍歷 Worksheets 集合實(shí)現(xiàn)批量轉(zhuǎn)換:
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 轉(zhuǎn)換為 JSON,無需依賴 Office 環(huán)境,代碼簡潔高效,適合各類.NET項(xiàng)目的數(shù)據(jù)交互場景。核心流程可概括為:加載 Excel 文件 → 讀取工作表 → 導(dǎo)出 DataTable → JSON 序列化 → 保存/傳輸,全程僅需5步即可完成。
通過本文的步驟指導(dǎo)與代碼示例,開發(fā)者可快速集成該功能,同時支持多工作表、特殊數(shù)據(jù)類型、空值處理等復(fù)雜場景,大幅提升數(shù)據(jù)轉(zhuǎn)換效率。
到此這篇關(guān)于C# .NET實(shí)現(xiàn)Excel到JSON的自動化轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)C# Excel轉(zhuǎn)JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
winfrom 在業(yè)務(wù)層實(shí)現(xiàn)事務(wù)控制的小例子
winfrom 在業(yè)務(wù)層實(shí)現(xiàn)事務(wù)控制的小例子,需要的朋友可以參考一下2013-03-03

