在企業級 .NET 開發場景中,Excel 文件與內存數據集(如 DataTable)的格式互轉是高頻技術需求。DataTable 作為 .NET 框架中通用的內存數據結構,常被用於承接 Excel 數據並完成後續的數據驗證、持久化、展示等操作。本文聚焦於 .NET 環境下,如何通過第三方類庫實現 Excel 文件到 DataTable 的高效轉換,核心講解數據轉換的技術實現邏輯與關鍵方法的使用。
在開始前可通過NuGet包管理器快速安裝 Free Spire.XLS for .NET 免費庫,具體步驟如下:
- 右鍵項目 → 管理 NuGet 程序包;
- 搜索對應類庫名稱並安裝最新穩定版;
- 或在 Package Manager Console 執行命令:
Install-Package FreeSpire.XLS
注意:該類庫的免費版本存在數據量使用限制,適用於小規模數據處理場景。
核心實現:Excel 轉 DataTable
1. 基礎實現:完整轉換流程
以下代碼實現 Excel 文件到 DataTable 的核心轉換邏輯,覆蓋 “加載 Excel 文件 → 選取目標工作表 → 調用封裝方法完成數據轉換 → 驗證轉換結果” 全流程,可直接用於基礎轉換場景:
using Spire.Xls;
using System;
using System.Data;
namespace ExcelToDataTableDemo
{
class Program
{
static void Main()
{
// 定義Excel文件路徑
string excelFilePath = "Sample.xlsx";
// 1. 初始化Workbook並加載Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile(excelFilePath);
// 2. 獲取第一個工作表(索引從0開始)
Worksheet sheet = workbook.Worksheets[0];
// 3. 核心:調用內置ExportDataTable方法轉換
// 參數1:要導出的單元格範圍(AllocatedRange表示工作表的有效數據範圍)
// 參數2:是否將第一行作為DataTable的列名
DataTable dataTable = sheet.ExportDataTable(sheet.AllocatedRange, true);
// 4. 驗證轉換結果:輸出數據信息
Console.WriteLine("=== Excel轉DataTable結果 ===");
// 輸出總行數(排除表頭)
Console.WriteLine($"數據總行數:{dataTable.Rows.Count}");
// 輸出列名
Console.Write("列名:");
foreach (DataColumn col in dataTable.Columns)
{
Console.Write(col.ColumnName + "\t");
}
Console.WriteLine("\n=== 數據內容 ===");
// 輸出所有行數據
foreach (DataRow row in dataTable.Rows)
{
foreach (var cellValue in row.ItemArray)
{
Console.Write(cellValue + "\t");
}
Console.WriteLine();
}
}
}
}
2. 進階用法:自定義轉換範圍與參數
ExportDataTable 提供多個重載方法,可滿足“指定轉換範圍、是否導出計算公式值”等個性化開發需求,以下是兩類典型的進階使用場景:
場景1:指定行/列範圍轉換(如第2-10行、第1-3列)
// 獲取指定範圍的單元格(行/列索引均從1開始)
CellRange targetRange = sheet.Range["A2:C10"];
// 轉換指定範圍,且不將第一行作為列名(因範圍從第2行開始)
DataTable dataTable = sheet.ExportDataTable(targetRange, false);
場景2:轉換時計算公式值
// 重載方法:第三個參數控制是否計算公式值。
// 參數説明:
// range:轉換範圍
// exportColumnNames:是否將第一行作為列名
// computedFormulaValue:是否計算公式值
DataTable dataTable = sheet.ExportDataTable(
sheet.AllocatedRange,
true,
true
);
在.NET開發中,通過 ExportDataTable 方法可實現 Excel 數據到 DataTable 的批量轉換,該方法通過封裝底層的單元格遍歷、數據類型映射邏輯,替代了手動逐單元格讀取數據的方式,是 Excel 與 DataTable 互轉場景下的高效實現方案。