使用C#實現(xiàn)Excel與DataTable互轉(zhuǎn)的方案
引言
在企業(yè)級開發(fā)中,Excel文件與DataTable(數(shù)據(jù)表)的互轉(zhuǎn)是報表生成、數(shù)據(jù)遷移等場景的核心需求。傳統(tǒng)方案如OleDb或Office Interop存在內(nèi)存泄漏、性能低下等問題,且依賴本地Office組件。而 Spire.XLS for .NET 作為企業(yè)級文檔操作庫,具備零依賴、跨平臺、全格式支持等特性,本文將詳解雙向互轉(zhuǎn)的實現(xiàn)方案。
實現(xiàn)方案詳解
方法一:Excel→DataTable
實現(xiàn)步驟
- 加載Excel文件:使用
Workbook類加載文件 - 選擇工作表:指定目標(biāo)Sheet索引或名稱
- 轉(zhuǎn)換邏輯:通過
ExportDataTable()方法提取數(shù)據(jù)
using Spire.Xls;
using System.Data;
try
{
// 初始化工作簿
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
// 獲取首個工作表
Worksheet sheet = workbook.Worksheets[0];
// 轉(zhuǎn)換配置:首行包含列名
DataTable dt = sheet.ExportDataTable(
sheet.FirstRow, // 起始行
sheet.FirstColumn, // 起始列
sheet.LastRow, // 結(jié)束行
sheet.LastColumn, // 結(jié)束列
true // hasColumnNames
);
}
catch (Exception ex)
{
Console.WriteLine($"轉(zhuǎn)換失?。簕ex.Message}");
}
核心參數(shù)
- HasColumnNames:控制是否將首行作為DataTable列名
- 邊界計算:動態(tài)獲取
LastRow可兼容動態(tài)數(shù)據(jù)區(qū)域
方法二:DataTable→Excel
實現(xiàn)步驟
- 創(chuàng)建工作簿:初始化
Workbook與工作表 - 樣式配置:設(shè)置標(biāo)題行字體、背景色
- 數(shù)據(jù)填充:通過
InsertDataTable()批量寫入
using Spire.Xls;
using System.Data;
DataTable dt = GetDataSource(); // 獲取數(shù)據(jù)源
try
{
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
// 設(shè)置標(biāo)題樣式
CellStyle style = workbook.Styles.Add("HeaderStyle");
style.Font.IsBold = true;
style.Color = Color.LightGray;
// 寫入數(shù)據(jù)(從A1開始)
sheet.InsertDataTable(dt, true, 1, 1);
// 應(yīng)用樣式到標(biāo)題行
sheet.GetRange(1, 1, 1, dt.Columns.Count).CellStyle = style;
// 自適應(yīng)列寬
sheet.AllocatedRange.AutoFitColumns();
// 保存文件
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2016);
}
catch (Exception ex)
{
Console.WriteLine($"導(dǎo)出失?。簕ex.Message}");
}
性能優(yōu)化
- AutoFitColumns() :避免手動計算列寬
- 批量寫入:
InsertDataTable相比逐行寫入效率提升80%
注意事項
- 大文件處理:建議分批次處理超過10萬行的數(shù)據(jù)集,避免內(nèi)存溢出
- 格式兼容性:導(dǎo)出時指定
ExcelVersion參數(shù)可適配不同版本Office
結(jié)語
通過 Workbook.LoadFromFile() 與 Worksheet.ExportDataTable() 的組合,開發(fā)者可快速實現(xiàn)雙向數(shù)據(jù)轉(zhuǎn)換。Spire.XLS憑借其對.NET Core的深度支持,在微服務(wù)、云端渲染等場景表現(xiàn)卓越。建議通過NuGet獲取最新穩(wěn)定版(Install-Package Spire.XLS)開啟高效開發(fā)。
以上就是使用C#實現(xiàn)Excel與DataTable互轉(zhuǎn)的方案的詳細(xì)內(nèi)容,更多關(guān)于C# Excel與DataTable互轉(zhuǎn)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#中Sleep() 和 Wait()的區(qū)別小結(jié)
Sleep()和 Wait()是兩個不同的方法,用于控制線程的執(zhí)行,本文主要介紹了C#中Sleep()和Wait()的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下2024-04-04
C#使用WinRar命令進(jìn)行壓縮和解壓縮操作的實現(xiàn)方法
這篇文章主要介紹了C#使用WinRar命令進(jìn)行壓縮和解壓縮操作的實現(xiàn)方法,涉及C#基于Process類操作WinRar命令的相關(guān)實現(xiàn)技巧,代碼簡潔實用,需要的朋友可以參考下2016-06-06
快速了解如何在.NETCORE中使用Generic-Host建立主機
這篇文章主要介紹了如何在.NETCORE中使用Generic-Host建立主機,文中代碼非常詳細(xì),可供大家參考,感興趣的朋友不妨閱讀完2020-05-05
基于C#實現(xiàn)Windows后臺窗口操作與圖像處理技術(shù)分析
在Windows編程中,操作后臺窗口是一項復(fù)雜而有用的技術(shù),它可以用來自動化用戶界面測試、應(yīng)用程序機器人等場景,本文將深入探討如何在C#中綁定后臺窗口、獲取后臺窗口界面圖片,以及在圖片中尋找指定圖標(biāo)并獲取坐標(biāo),需要的朋友可以參考下2024-12-12

