C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為DataTable
在企業(yè)級(jí)開(kāi)發(fā)中,Excel 與數(shù)據(jù)庫(kù) / 內(nèi)存數(shù)據(jù)集的互轉(zhuǎn)是高頻需求,DataTable 作為.NET 中通用的內(nèi)存數(shù)據(jù)結(jié)構(gòu),常被用于承接 Excel 數(shù)據(jù)進(jìn)行后續(xù)處理(如數(shù)據(jù)驗(yàn)證、入庫(kù)、展示)。本文將分享如何使用免費(fèi)庫(kù) Free Spire.XLS for .NET 實(shí)現(xiàn) Excel 文件到 DataTable 的高效轉(zhuǎn)換。
一、免費(fèi)庫(kù)介紹與安裝
1. Free Spire.XLS for .NET 核心優(yōu)勢(shì)
內(nèi)置 ExportDataTable 方法,無(wú)需手動(dòng)遍歷單元格,代碼量減少80%;
無(wú)需依賴(lài) Microsoft Office/Excel 客戶端,跨平臺(tái)部署更便捷;
支持 .xls、.xlsx 等主流 Excel 格式,API封裝直觀,新手易上手。
注意: 免費(fèi)版有一定數(shù)據(jù)量限制,適合小型項(xiàng)目
2. 安裝 Free Spire.XLS
推薦通過(guò)NuGet快速安裝,步驟如下:
- 右鍵項(xiàng)目 → 管理NuGet程序包;
- 搜索“Free Spire.XLS”并安裝最新穩(wěn)定版;
或在 Package Manager Console 執(zhí)行命令:
Install-Package FreeSpire.XLS
二、核心實(shí)現(xiàn):Excel 轉(zhuǎn) DataTable
1. 將指定工作表轉(zhuǎn)換為 DataTable 內(nèi)存數(shù)據(jù)集
以下代碼實(shí)現(xiàn)最核心的轉(zhuǎn)換邏輯,包含 “加載 Excel→選取目標(biāo)工作表→核心數(shù)據(jù)轉(zhuǎn)DataTable→驗(yàn)證并輸出結(jié)果” 完整流程:
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. 獲取第一個(gè)工作表(索引從0開(kāi)始)
Worksheet sheet = workbook.Worksheets[0];
// 3. 核心:調(diào)用內(nèi)置ExportDataTable方法轉(zhuǎn)換
// 參數(shù)1:要導(dǎo)出的單元格范圍(AllocatedRange表示工作表的有效數(shù)據(jù)范圍)
// 參數(shù)2:是否將第一行作為DataTable的列名
DataTable dataTable = sheet.ExportDataTable(sheet.AllocatedRange, true);
// 4. 驗(yàn)證轉(zhuǎn)換結(jié)果:輸出數(shù)據(jù)信息
Console.WriteLine("=== Excel轉(zhuǎn)DataTable結(jié)果 ===");
// 輸出總行數(shù)(排除表頭)
Console.WriteLine($"數(shù)據(jù)總行數(shù):{dataTable.Rows.Count}");
// 輸出列名
Console.Write("列名:");
foreach (DataColumn col in dataTable.Columns)
{
Console.Write(col.ColumnName + "\t");
}
Console.WriteLine("\n=== 數(shù)據(jù)內(nèi)容 ===");
// 輸出所有行數(shù)據(jù)
foreach (DataRow row in dataTable.Rows)
{
foreach (var cellValue in row.ItemArray)
{
Console.Write(cellValue + "\t");
}
Console.WriteLine();
}
}
}
}
2. 進(jìn)階用法:自定義轉(zhuǎn)換范圍與參數(shù)
ExportDataTable 提供了多個(gè)重載方法,可滿足“指定轉(zhuǎn)換范圍、是否導(dǎo)出空值”等個(gè)性化需求,以下是常用進(jìn)階場(chǎng)景:
場(chǎng)景1:只轉(zhuǎn)換指定行/列范圍(如第2-10行、第1-3列)
// 獲取指定范圍的單元格(行/列索引均從1開(kāi)始) CellRange targetRange = sheet.Range["A2:C10"]; // 轉(zhuǎn)換指定范圍,且不將第一行作為列名(因范圍從第2行開(kāi)始) DataTable dataTable = sheet.ExportDataTable(targetRange, false);
場(chǎng)景2:導(dǎo)出時(shí)計(jì)算公式值
// 重載方法:第三個(gè)參數(shù)控制是否計(jì)算公式值。
// 參數(shù)說(shuō)明:
// range:轉(zhuǎn)換范圍
// exportColumnNames:是否將第一行作為列名
// computedFormulaValue:是否計(jì)算公式值
DataTable dataTable = sheet.ExportDataTable(
sheet.AllocatedRange,
true,
true
);
通過(guò)本文的 ExportDataTable 方法,一行代碼即可完成核心Excel 到 DataTable 的轉(zhuǎn)換,無(wú)需手動(dòng)遍歷單元格。
到此這篇關(guān)于C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為DataTable的文章就介紹到這了,更多相關(guān)C# Excel轉(zhuǎn)DataTable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用C#將DataTable導(dǎo)出為Excel文件的實(shí)現(xiàn)教程
- C#實(shí)現(xiàn)Excel與DataTable的數(shù)據(jù)互轉(zhuǎn)的代碼示例
- C#把DataTable導(dǎo)出為Excel文件
- C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable
- C#使用NPOI實(shí)現(xiàn)Excel和DataTable的互轉(zhuǎn)
- C#讀取Excel到DataTable的方法示例
- C#使用Datatable導(dǎo)出Excel
- c# 將Datatable數(shù)據(jù)導(dǎo)出到Excel表格中
相關(guān)文章
C#開(kāi)發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog
這篇文章介紹了C#開(kāi)發(fā)Windows UWP系列之對(duì)話框MessageDialog和ContentDialog,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#程序啟動(dòng)項(xiàng)的設(shè)置方法
這篇文章主要為大家詳細(xì)介紹了C#程序啟動(dòng)項(xiàng)的設(shè)置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
unity實(shí)現(xiàn)鼠標(biāo)跟隨(ITween)
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)鼠標(biāo)跟隨,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
C# 判斷字符為空的6種方法的效率實(shí)測(cè)對(duì)比
本文主要介紹了C#中判斷字符是否為空的方法,并實(shí)測(cè)對(duì)比各種方法的執(zhí)行效率,最后推薦大家使用IsNullOrEmpty,效率和易用性比較均衡。2016-05-05

