最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#實(shí)現(xiàn)Excel與DataTable互轉(zhuǎn)的方案

 更新時間:2025年08月25日 09:10:55   作者:LSTM97  
在企業(yè)級開發(fā)中,Excel文件與DataTable(數(shù)據(jù)表)的互轉(zhuǎn)是報表生成、數(shù)據(jù)遷移等場景的核心需求,傳統(tǒng)方案如OleDb或Office Interop存在內(nèi)存泄漏、性能低下等問題,且依賴本地Office組件,所以本文給大家介紹了使用C#實(shí)現(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)的實(shí)現(xiàn)方案。

實(shí)現(xiàn)方案詳解

方法一:Excel→DataTable

實(shí)現(xiàn)步驟

  1. 加載Excel文件:使用Workbook類加載文件
  2. 選擇工作表:指定目標(biāo)Sheet索引或名稱
  3. 轉(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

實(shí)現(xiàn)步驟

  1. 創(chuàng)建工作簿:初始化Workbook與工作表
  2. 樣式配置:設(shè)置標(biāo)題行字體、背景色
  3. 數(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ā)者可快速實(shí)現(xiàn)雙向數(shù)據(jù)轉(zhuǎn)換。Spire.XLS憑借其對.NET Core的深度支持,在微服務(wù)、云端渲染等場景表現(xiàn)卓越。建議通過NuGet獲取最新穩(wěn)定版(Install-Package Spire.XLS)開啟高效開發(fā)。

以上就是使用C#實(shí)現(xiàn)Excel與DataTable互轉(zhuǎn)的方案的詳細(xì)內(nèi)容,更多關(guān)于C# Excel與DataTable互轉(zhuǎn)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C# 多線程讀取注冊表,加載至TreeView

    C# 多線程讀取注冊表,加載至TreeView

    C#下多線程讀取注冊表,加載至TreeView的實(shí)現(xiàn)代碼。
    2009-09-09
  • C#版Windows服務(wù)安裝卸載小工具

    C#版Windows服務(wù)安裝卸載小工具

    這篇文章主要為大家推薦了一款C#版Windows服務(wù)安裝卸載小工具,小巧靈活的控制臺程序,希望大家喜歡,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C#通過HttpClient+Polly實(shí)現(xiàn)自動重試與超時策略的操作指南

    C#通過HttpClient+Polly實(shí)現(xiàn)自動重試與超時策略的操作指南

    在微服務(wù)與API高度依賴的時代,網(wǎng)絡(luò)請求的 可靠性 變得至關(guān)重要,網(wǎng)絡(luò)波動、臨時超時或第三方API不穩(wěn)定,常常會導(dǎo)致應(yīng)用拋出異常,為了解決這些問題,本文給大家介紹了在C#中如何通過HttpClient + Polly實(shí)現(xiàn)自動重試與超時策略,需要的朋友可以參考下
    2025-11-11
  • C#區(qū)分中英文按照指定長度截取字符串的方法

    C#區(qū)分中英文按照指定長度截取字符串的方法

    這篇文章主要介紹了C#區(qū)分中英文按照指定長度截取字符串的方法,涉及C#操作字符串的正則匹配與截取等常用操作技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-03-03
  • C#使用SqlSugarClient進(jìn)行數(shù)據(jù)訪問并實(shí)現(xiàn)了統(tǒng)一的批量依賴注入(示例代碼)

    C#使用SqlSugarClient進(jìn)行數(shù)據(jù)訪問并實(shí)現(xiàn)了統(tǒng)一的批量依賴注入(示例代碼)

    M為 BaseDto 請用C# 給出一個案例,支持不同表對應(yīng)不同的業(yè)務(wù)邏輯層,然后不同倉儲實(shí)例,不同表的業(yè)務(wù),都實(shí)現(xiàn)統(tǒng)一的批量依賴注入,下面通過示例給大家演示如何使用SqlSugarClient進(jìn)行數(shù)據(jù)訪問,并實(shí)現(xiàn)了統(tǒng)一的批量依賴注入,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • c#項目實(shí)現(xiàn)發(fā)布到服務(wù)器全過程

    c#項目實(shí)現(xiàn)發(fā)布到服務(wù)器全過程

    這篇文章主要介紹了c#項目實(shí)現(xiàn)發(fā)布到服務(wù)器全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • C#實(shí)現(xiàn)線性搜索算法

    C#實(shí)現(xiàn)線性搜索算法

    線性搜索算法是一種基本的搜索算法,通過逐個比較元素來查找目標(biāo)元素,學(xué)習(xí)線性搜索算法有助于培養(yǎng)算法思維和編程能力,對于初學(xué)者來說是一種重要的算法訓(xùn)練,感興趣的可以了解一下
    2024-10-10
  • C#字符串與正則表達(dá)式的圖文詳解

    C#字符串與正則表達(dá)式的圖文詳解

    正則表達(dá)式是個非常好的工具,它的作用主要是用簡單的有規(guī)則的表達(dá)式來檢索和匹配一段字符串,這篇文章主要給大家介紹了關(guān)于C#字符串與正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • C#簡單讀取、改變文件的創(chuàng)建、修改及訪問時間的方法

    C#簡單讀取、改變文件的創(chuàng)建、修改及訪問時間的方法

    這篇文章主要介紹了C#簡單讀取、改變文件的創(chuàng)建、修改及訪問時間的方法,涉及C#文件類SetCreationTime、SetLastWriteTime及SetLastAccessTime的相關(guān)使用技巧,需要的朋友可以參考下
    2015-07-07
  • C#線程委托實(shí)現(xiàn)原理及方法解析

    C#線程委托實(shí)現(xiàn)原理及方法解析

    這篇文章主要介紹了C#線程委托實(shí)現(xiàn)原理及方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09

最新評論

台州市| 郧西县| 宜昌市| 治多县| 西昌市| 稷山县| 荆州市| 横峰县| 巫山县| 安宁市| 大化| 曲周县| 天镇县| 乳山市| 定兴县| 布尔津县| 林芝县| 江城| 长海县| 满洲里市| 陈巴尔虎旗| 保康县| 万州区| 万源市| 吉林省| 涞水县| 三穗县| 蒲江县| 乳山市| 镇赉县| 沙雅县| 海淀区| 安宁市| 娱乐| 常熟市| 平阳县| 永清县| 松溪县| 宁海县| 石城县| 宝应县|