翻譯|使用教程|編輯:吉煒煒|2025-08-18 16:57:24.280|閱讀 89 次
概述:將數(shù)據(jù)庫數(shù)據(jù)導出為 Excel 文件,也因此成為實現(xiàn)報表生成、審計追蹤、數(shù)據(jù)遷移和臨時分析等需求時的一種高頻操作。本文將介紹如何使用 Spire.XLS for .NET 通過 C# 將數(shù)據(jù)庫記錄高效導出到 Excel 文件。示例以 SQL Server 數(shù)據(jù)庫為基礎(chǔ),但相同方法也適用于 SQLite、MySQL、Oracle 等其他關(guān)系型數(shù)據(jù)庫,只需調(diào)整連接方式即可。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在企業(yè)應用開發(fā)中,Excel 通常被用作在技術(shù)人員與業(yè)務人員之間傳遞結(jié)構(gòu)化數(shù)據(jù)的橋梁,因其格式靈活、易于共享且用戶普遍熟悉。而將數(shù)據(jù)庫數(shù)據(jù)導出為 Excel 文件,也因此成為實現(xiàn)報表生成、審計追蹤、數(shù)據(jù)遷移和臨時分析等需求時的一種高頻操作。
E-iceblue旗下Spire系列產(chǎn)品是文檔開發(fā)領(lǐng)域的佼佼者,支持國產(chǎn)化信創(chuàng)。本文將介紹如何使用 Spire.XLS for .NET 通過 C# 將數(shù)據(jù)庫記錄高效導出到 Excel 文件。示例以 SQL Server 數(shù)據(jù)庫為基礎(chǔ),但相同方法也適用于 SQLite、MySQL、Oracle 等其他關(guān)系型數(shù)據(jù)庫,只需調(diào)整連接方式即可。
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
在開始編碼之前,請先確認開發(fā)環(huán)境已就緒:
示例數(shù)據(jù)庫
以下 SQL 腳本在 SQL Server Express 中創(chuàng)建一個 Employees 表并插入測試數(shù)據(jù):
CREATE TABLE Employees ( Id INT PRIMARY KEY IDENTITY, Name NVARCHAR(100) NOT NULL, Department NVARCHAR(50) NOT NULL, Position NVARCHAR(50), HireDate DATE NOT NULL, Salary DECIMAL(10, 2) NOT NULL, IsFullTime BIT NOT NULL ); INSERT INTO Employees (Name, Department, Position, HireDate, Salary, IsFullTime) VALUES (N'張偉', N'人力資源部', N'人事經(jīng)理', '2018-05-01', 5500.00, 1), (N'李強', N'信息技術(shù)部', N'軟件工程師', '2020-09-15', 7200.50, 1), (N'王芳', N'財務部', N'會計', '2019-11-20', 6300.75, 0), (N'陳麗', N'市場部', N'內(nèi)容專員', '2021-02-10', 4800.00, 1);如果使用 MySQL 或 SQLite,只需調(diào)整 SQL 語法與連接字符串,整體導出邏輯不變。
以 SQL Server Express 為例,使用 SqlConnection 建立連接:
string connectionString = @"Data Source=YourServer\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True;";
使用 SqlDataAdapter 執(zhí)行查詢并填充 DataTable:
using System.Data; using Microsoft.Data.SqlClient; DataTable dataTable = new DataTable(); using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string query = "SELECT * FROM Employees"; using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn)) { adapter.Fill(dataTable); } }
using Spire.Xls; Workbook workbook = new Workbook(); workbook.Worksheets.Clear(); Worksheet sheet = workbook.Worksheets.Add("Employees"); // 從第 1 行第 1 列插入 DataTable 數(shù)據(jù),并包含列標題 sheet.InsertDataTable(dataTable, true, 1, 1); // 保存為 Excel 2013 格式 workbook.SaveToFile("Employees.xlsx", ExcelVersion.Version2013);
核心方法:
InsertDataTable(DataTable table, bool columnHeaders, int firstRow, int firstColumn)
SaveToFile:可保存為 .xlsx、.xls、.csv 等格式,也可保存到流中
導出數(shù)據(jù)后,可以通過以下方式提高可讀性:
// 表頭樣式 sheet.Rows[0].Style.Font.IsBold = true; sheet.Rows[0].Style.Font.Size = 14; sheet.Rows[0].Style.HorizontalAlignment = HorizontalAlignType.Center; sheet.Rows[0].Style.Color = System.Drawing.Color.LightGray; // 數(shù)據(jù)行樣式 for (int i = 1; i < sheet.Rows.Count(); i++) { var dataRow = sheet.Rows[i]; dataRow.Style.Font.Size = 12; dataRow.Style.HorizontalAlignment = HorizontalAlignType.Left; } // 設(shè)置全局字體 sheet.AllocatedRange.Style.Font.FontName = "微軟雅黑"; // 添加邊框 sheet.AllocatedRange.BorderAround(LineStyleType.Thin, System.Drawing.Color.Black); sheet.AllocatedRange.BorderInside(LineStyleType.Medium, System.Drawing.Color.Black); // 自動調(diào)整列寬 sheet.AllocatedRange.AutoFitColumns();
除了 DataTable 之外,你還可以:
使用 Entity Framework
var employees = dbContext.Employees.ToList();
然后將集合轉(zhuǎn)換為 DataTable 或逐行寫入 Excel。
調(diào)用存儲過程
SqlCommand cmd = new SqlCommand("GetEmployees", conn); cmd.CommandType = CommandType.StoredProcedure;
讀取 SQLite / MySQL / Oracle 只需更換連接類型和驅(qū)動(Microsoft.Data.Sqlite、MySql.Data 等),其余導出邏輯相同。
問題 | 可能原因與解決方案 |
---|---|
Excel 文件為空 | 檢查 DataTable 是否在導出前已正確填充 |
文件無法保存 | 確認保存路徑存在且有寫入權(quán)限 |
無法連接數(shù)據(jù)庫 | 檢查服務器是否啟動、連接字符串是否正確 |
特殊字符亂碼 | 數(shù)據(jù)庫列類型應使用 NVARCHAR,Excel 需使用支持 Unicode 的字體 |
身份驗證失敗 | Windows 身份驗證用 Integrated Security=True,SQL 身份驗證需提供用戶名與密碼 |
通過 Spire.XLS for .NET,我們可以在 C# 中快速將數(shù)據(jù)庫數(shù)據(jù)導出為 Excel,無需安裝 Microsoft Office,且支持批量數(shù)據(jù)、格式設(shè)置和多種文件格式。 此方案可用于定時任務、后臺服務或 Web 應用,實現(xiàn)數(shù)據(jù)的自動化導出與分發(fā)。
Q:如何在 C# 中將 SQL 數(shù)據(jù)導出到 Excel? A:使用 SqlConnection 讀取數(shù)據(jù)到 DataTable,再調(diào)用 Spire.XLS 的 InsertDataTable() 方法即可。
Q:支持導出 SQLite 或 MySQL 數(shù)據(jù)嗎? A:支持,只需更換數(shù)據(jù)庫驅(qū)動與連接字符串。
Q:需要安裝 Excel 嗎? A:不需要,Spire.XLS 是獨立的 Excel 處理庫。
Q:能否將多個表導出到同一個 Excel 文件? A:可以,創(chuàng)建多個工作表并分別插入數(shù)據(jù)即可。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務理解與管理洞察,以系統(tǒng)化的業(yè)務建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務,幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費試用,咨詢,正版銷售等于一體的專業(yè)化服務。E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化,幫助企業(yè)高效構(gòu)建文檔處理的應用程序。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)