原創(chuàng)|行業(yè)資訊|編輯:吉煒煒|2025-09-18 09:53:59.450|閱讀 54 次
概述:在 C# 開發(fā)中,DataSet 常用于管理內(nèi)存中的數(shù)據(jù),通常來源于數(shù)據(jù)庫查詢或系統(tǒng)集成過程。本文將介紹如何使用 Spire.XLS for .NET 在 C# 中導(dǎo)出 DataSet 到 Excel,包括創(chuàng)建 Excel 文件、將多個 DataTable 分別寫入不同工作表、應(yīng)用格式化,以及處理大數(shù)據(jù)量導(dǎo)出等場景。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在 C# 開發(fā)中,DataSet 常用于管理內(nèi)存中的數(shù)據(jù),通常來源于數(shù)據(jù)庫查詢或系統(tǒng)集成過程。在很多情況下,你可能需要將 DataSet 導(dǎo)出為 Excel 文件——例如生成報表、與非開發(fā)人員共享結(jié)構(gòu)化數(shù)據(jù),或?qū)⒂涗洑w檔以便后續(xù)參考。
E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。本文將介紹如何使用 Spire.XLS for .NET 在 C# 中導(dǎo)出 DataSet 到 Excel,包括創(chuàng)建 Excel 文件、將多個 DataTable 分別寫入不同工作表、應(yīng)用格式化,以及處理大數(shù)據(jù)量導(dǎo)出等場景。
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
什么是 DataSet?
C# 中的 DataSet 是內(nèi)存中對結(jié)構(gòu)化數(shù)據(jù)的表示,可以包含多個 DataTable,并保存其行、列和關(guān)系。這使得開發(fā)者在無需直接連接數(shù)據(jù)庫的情況下,也能方便地處理關(guān)系型數(shù)據(jù)。
為什么要將 DataSet 導(dǎo)出到 Excel?
相比純文本或 CSV,Excel 具備豐富的格式化功能、多工作表支持以及更佳的可讀性。
本文使用 Spire.XLS for .NET 來導(dǎo)出 DataSet 到 Excel。通過 NuGet 安裝:
Install-Package Spire.XLS引用命名空間:
using Spire.Xls; using System.Data; using System.Drawing; // 用于顏色
將 DataSet 導(dǎo)出為 Excel 包含兩個關(guān)鍵步驟:準備數(shù)據(jù)和寫入工作簿。實際應(yīng)用中,DataSet 通常來自數(shù)據(jù)庫或 API 查詢。為了演示清晰,這里我們先構(gòu)建一個內(nèi)存中的 DataSet,再將其導(dǎo)出為 Excel 文件,每個 DataTable 對應(yīng)一個工作表。
下面的代碼示例構(gòu)建了一個包含多個業(yè)務(wù)表的 DataSet,表中包含多種常見數(shù)據(jù)類型(int、string、DateTime、decimal)。
using System; using System.Data; class Program { static DataSet CreateSampleDataSet() { DataSet ds = new DataSet("公司數(shù)據(jù)"); // 員工表 DataTable employees = new DataTable("員工"); employees.Columns.Add("編號", typeof(int)); employees.Columns.Add("姓名", typeof(string)); employees.Columns.Add("部門編號", typeof(int)); employees.Columns.Add("入職日期", typeof(DateTime)); employees.Columns.Add("薪資", typeof(decimal)); employees.Rows.Add(1, "張偉", 101, new DateTime(2020, 5, 12), 5500.00m); employees.Rows.Add(2, "李娜", 102, new DateTime(2019, 3, 8), 7200.50m); employees.Rows.Add(3, "王強", 103, new DateTime(2021, 11, 2), 4800.75m); // 部門表 DataTable departments = new DataTable("部門"); departments.Columns.Add("部門編號", typeof(int)); departments.Columns.Add("部門名稱", typeof(string)); departments.Rows.Add(101, "人事部"); departments.Rows.Add(102, "信息技術(shù)部"); departments.Rows.Add(103, "財務(wù)部"); // 項目表 DataTable projects = new DataTable("項目"); projects.Columns.Add("項目編號", typeof(int)); projects.Columns.Add("項目名稱", typeof(string)); projects.Columns.Add("負責(zé)人編號", typeof(int)); projects.Columns.Add("開始日期", typeof(DateTime)); projects.Rows.Add(1001, "招聘系統(tǒng)", 1, new DateTime(2023, 1, 15)); projects.Rows.Add(1002, "ERP升級", 2, new DateTime(2023, 4, 10)); projects.Rows.Add(1003, "預(yù)算規(guī)劃", 3, new DateTime(2023, 7, 5)); ds.Tables.Add(employees); ds.Tables.Add(departments); ds.Tables.Add(projects); return ds; } }
有了 DataSet 后,接下來創(chuàng)建 Excel 文件:實例化 Workbook,遍歷 DataTable,將其插入到工作表中,最后保存文件。
using Spire.Xls; using System.Data; class Program { static void Main() { DataSet ds = CreateSampleDataSet(); Workbook workbook = new Workbook(); workbook.Worksheets.Clear(); // 每個 DataTable 導(dǎo)出為一個單獨的工作表 for (int i = 0; i < ds.Tables.Count; i++) { Worksheet sheet = workbook.Worksheets.Add(ds.Tables[i].TableName); sheet.InsertDataTable(ds.Tables[i], true, 1, 1); sheet.Name = ds.Tables[i].TableName; } workbook.SaveToFile("DatasetToExcel.xlsx", ExcelVersion.Version2016); } }
導(dǎo)出要點說明
除了將 DataTable 導(dǎo)出到不同工作表,你也可以通過調(diào)整 InsertDataTable 方法的起始行列參數(shù),將多個表寫入同一個工作表。
效果預(yù)覽
下圖展示了從 DataSet 導(dǎo)出的 Excel 文件,其中包含 Employees、Departments、Projects 三個工作表。
原始數(shù)據(jù)往往不夠直觀,格式化可以提升可讀性,使報表更專業(yè)。通過 Spire.XLS,可以設(shè)置字體、背景色、邊框,并對數(shù)字和日期應(yīng)用格式。
using System.Drawing; using Spire.Xls; // 獲取第一個工作表 Worksheet sheet1 = workbook.Worksheets["員工"]; // 1) 表頭樣式 (A1:E1) CellRange header = sheet1.AllocatedRange.Rows[0]; header.Style.Font.IsBold = true; header.Style.Font.Size = 12; header.Style.Font.Color = Color.White; header.Style.Color = Color.SteelBlue; header.BorderAround(LineStyleType.Thin); // 2) 設(shè)置列的數(shù)字格式 (D: HireDate, E: Salary) sheet1.AllocatedRange.Columns[3].Style.NumberFormat = "yyyy-mm-dd"; sheet1.AllocatedRange.Columns[4].Style.NumberFormat = "$#,##0.00"; // 3) 數(shù)據(jù)區(qū)域設(shè)置淺色背景 (A2:E4 示例) CellRange data = sheet1.Range["A2:E4"]; data.Style.Color = Color.FromArgb(245, 247, 250); data.BorderAround(LineStyleType.Thin); // 設(shè)置字體名 sheet1.AllocatedRange.Style.Font.FontName = "微軟雅黑"; // 自動調(diào)整行高列寬 sheet1.AllocatedRange.AutoFitColumns(); sheet1.AllocatedRange.AutoFitRows();
格式化功能說明
格式化效果預(yù)覽
下圖展示了藍色背景的加粗表頭、帶邊框的區(qū)域,以及日期和貨幣列的正確格式。
當(dāng) DataSet 數(shù)據(jù)量較大時,性能與內(nèi)存消耗尤為關(guān)鍵。常見優(yōu)化方式包括:
除了導(dǎo)出,很多場景下還需要將 Excel 文件讀取到 DataSet 中,用于數(shù)據(jù)處理或遷移。這在導(dǎo)入外部報表、系統(tǒng)集成或數(shù)據(jù)庫預(yù)處理時非常實用。
using System.Data; using Spire.Xls; class Program { static DataSet ReadExcelIntoDataSet(string filePath) { DataSet ds = new DataSet(); Workbook workbook = new Workbook(); workbook.LoadFromFile(filePath); foreach (Worksheet sheet in workbook.Worksheets) { DataTable dt = sheet.ExportDataTable(); dt.TableName = sheet.Name; ds.Tables.Add(dt); } return ds; } }
ExportDataTable 方法可以將每個工作表轉(zhuǎn)換為 DataTable,保留其結(jié)構(gòu)和單元格數(shù)據(jù)。通過設(shè)置 TableName 并添加到 DataSet,即可將多個工作表整合為一個內(nèi)存數(shù)據(jù)容器,便于進一步處理。
在 C# 中將 DataSet 導(dǎo)出到 Excel,可以方便地生成報表、共享數(shù)據(jù),并提升數(shù)據(jù)的可分析性與展示效果。通過 Spire.XLS for .NET,你不僅能直接從 DataSet 創(chuàng)建 Excel 文件,還能進行格式化、管理多工作表,并高效處理大數(shù)據(jù)量。同時也支持將 Excel 數(shù)據(jù)導(dǎo)入 DataSet,便于與應(yīng)用或數(shù)據(jù)庫集成。
遍歷 ds.Tables,為每個 DataTable 調(diào)用 InsertDataTable,并新建工作表即可。
可以。使用 Workbook.LoadFromFile() 打開文件,再選擇目標工作表并調(diào)用 InsertDataTable。
數(shù)據(jù)類型會被保留。你還可以在導(dǎo)出后對列應(yīng)用日期、貨幣、對齊等格式。
可拆分到多個工作表,分批寫入,并減少復(fù)雜格式,以提升性能。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務(wù)理解與管理洞察,以系統(tǒng)化的業(yè)務(wù)建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務(wù),幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)