國產(chǎn)化Excel處理組件Spire.XLS教程:使用 C# 從數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)到 Excel(含 SQL 示例)

在企業(yè)應(yīng)用開發(fā)中,Excel 通常被用作在技術(shù)人員與業(yè)務(wù)人員之間傳遞結(jié)構(gòu)化數(shù)據(jù)的橋梁,因其格式靈活、易于共享且用戶普遍熟悉。而將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel 文件,也因此成為實(shí)現(xiàn)報(bào)表生成、審計(jì)追蹤、數(shù)據(jù)遷移和臨時(shí)分析等需求時(shí)的一種高頻操作。
E-iceblue旗下Spire系列產(chǎn)品是文檔開發(fā)領(lǐng)域的佼佼者,支持國產(chǎn)化信創(chuàng)。本文將介紹如何使用 Spire.XLS for .NET 通過 C# 將數(shù)據(jù)庫記錄高效導(dǎo)出到 Excel 文件。示例以 SQL Server 數(shù)據(jù)庫為基礎(chǔ),但相同方法也適用于 SQLite、MySQL、Oracle 等其他關(guān)系型數(shù)據(jù)庫,只需調(diào)整連接方式即可。
Spire.XLS for .NET試用下載,請聯(lián)系Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
準(zhǔn)備工作
在開始編碼之前,請先確認(rèn)開發(fā)環(huán)境已就緒:
- .NET 版本:支持 .NET Framework 及 .NET Core / .NET 6 / .NET 8
- IDE:Visual Studio(社區(qū)版及以上版本均可)
- 數(shù)據(jù)庫:本文示例使用 SQL Server Express,采用 Windows 身份驗(yàn)證(也可改為 SQL 身份驗(yàn)證)
- 必需庫:
- Spire.XLS for .NET(NuGet 安裝:Install-Package Spire.XLS)
- Microsoft.Data.SqlClient(SQL Server 訪問驅(qū)動(dòng),NuGet 安裝)
Spire.XLS for .NET試用下載,請聯(lián)系Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
示例數(shù)據(jù)庫
以下 SQL 腳本在 SQL Server Express 中創(chuàng)建一個(gè) 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'李強(qiáng)', N'信息技術(shù)部', N'軟件工程師', '2020-09-15', 7200.50, 1),
(N'王芳', N'財(cái)務(wù)部', N'會(huì)計(jì)', '2019-11-20', 6300.75, 0),
(N'陳麗', N'市場部', N'內(nèi)容專員', '2021-02-10', 4800.00, 1);
如果使用 MySQL 或 SQLite,只需調(diào)整 SQL 語法與連接字符串,整體導(dǎo)出邏輯不變。
用 C# 將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出到 Excel
1. 建立數(shù)據(jù)庫連接
以 SQL Server Express 為例,使用 SqlConnection 建立連接:
string connectionString = @"Data Source=YourServer\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True;";
- Windows 身份驗(yàn)證:Integrated Security=True
- SQL 身份驗(yàn)證: User ID=yourUsername;Password=yourPassword;Encrypt=True;TrustServerCertificate=True
2. 將數(shù)據(jù)讀取到 DataTable
使用 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);
}
}
3. 使用 Spire.XLS 導(dǎo)出到 Excel
using Spire.Xls;
Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
Worksheet sheet = workbook.Worksheets.Add("Employees");
// 從第 1 行第 1 列插入 DataTable 數(shù)據(jù),并包含列標(biāo)題
sheet.InsertDataTable(dataTable, true, 1, 1);
// 保存為 Excel 2013 格式
workbook.SaveToFile("Employees.xlsx", ExcelVersion.Version2013);
核心方法:
-
InsertDataTable(DataTable table, bool columnHeaders, int firstRow, int firstColumn)
- columnHeaders=true 表示將列名寫入第一行
- firstRow / firstColumn 定義數(shù)據(jù)起始位置(基于 1 索引)
-
SaveToFile:可保存為 .xlsx、.xls、.csv 等格式,也可保存到流中

Spire.XLS for .NET試用下載,請聯(lián)系Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
優(yōu)化 Excel 格式(可選但推薦)
導(dǎo)出數(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);
// 自動(dòng)調(diào)整列寬
sheet.AllocatedRange.AutoFitColumns();

Spire.XLS for .NET試用下載,請聯(lián)系Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
其他數(shù)據(jù)讀取方式
除了 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ū)動(dòng)(Microsoft.Data.Sqlite、MySql.Data 等),其余導(dǎo)出邏輯相同。
常見問題與解決方法
| 問題 | 可能原因與解決方案 |
|---|---|
| Excel 文件為空 | 檢查 DataTable 是否在導(dǎo)出前已正確填充 |
| 文件無法保存 | 確認(rèn)保存路徑存在且有寫入權(quán)限 |
| 無法連接數(shù)據(jù)庫 | 檢查服務(wù)器是否啟動(dòng)、連接字符串是否正確 |
| 特殊字符亂碼 | 數(shù)據(jù)庫列類型應(yīng)使用 NVARCHAR,Excel 需使用支持 Unicode 的字體 |
| 身份驗(yàn)證失敗 | Windows 身份驗(yàn)證用 Integrated Security=True,SQL 身份驗(yàn)證需提供用戶名與密碼 |
總結(jié)
通過 Spire.XLS for .NET,我們可以在 C# 中快速將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel,無需安裝 Microsoft Office,且支持批量數(shù)據(jù)、格式設(shè)置和多種文件格式。 此方案可用于定時(shí)任務(wù)、后臺服務(wù)或 Web 應(yīng)用,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化導(dǎo)出與分發(fā)。
常見問題解答
Q:如何在 C# 中將 SQL 數(shù)據(jù)導(dǎo)出到 Excel? A:使用 SqlConnection 讀取數(shù)據(jù)到 DataTable,再調(diào)用 Spire.XLS 的 InsertDataTable() 方法即可。
Q:支持導(dǎo)出 SQLite 或 MySQL 數(shù)據(jù)嗎? A:支持,只需更換數(shù)據(jù)庫驅(qū)動(dòng)與連接字符串。
Q:需要安裝 Excel 嗎? A:不需要,Spire.XLS 是獨(dú)立的 Excel 處理庫。
Q:能否將多個(gè)表導(dǎo)出到同一個(gè) Excel 文件? A:可以,創(chuàng)建多個(gè)工作表并分別插入數(shù)據(jù)即可。
Spire.XLS for .NET試用下載,請聯(lián)系Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel 文件,也因此成為實(shí)現(xiàn)報(bào)表生成、審計(jì)追蹤、數(shù)據(jù)遷移和臨時(shí)分析等需求時(shí)的一種高頻操作。本文將介紹如何使用 Spire.XLS for .NET 通過 C# 將數(shù)據(jù)庫記錄高效導(dǎo)出到 Excel 文件。示例以 SQL Server 數(shù)據(jù)庫為基礎(chǔ),但相同方法也適用于 SQLite、MySQL、Oracle 等其他關(guān)系型數(shù)據(jù)庫,只需調(diào)整連接方式即可。
浙公網(wǎng)安備 33010602011771號