翻譯|使用教程|編輯:吉煒煒|2025-08-18 16:57:24.280|閱讀 123 次
概述:將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel 文件,也因此成為實現(xiàn)報表生成、審計追蹤、數(shù)據(jù)遷移和臨時分析等需求時的一種高頻操作。本文將介紹如何使用 Spire.XLS for .NET 通過 C# 將數(shù)據(jù)庫記錄高效導(dǎo)出到 Excel 文件。示例以 SQL Server 數(shù)據(jù)庫為基礎(chǔ),但相同方法也適用于 SQLite、MySQL、Oracle 等其他關(guān)系型數(shù)據(jù)庫,只需調(diào)整連接方式即可。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
	 
 
在企業(yè)應(yīng)用開發(fā)中,Excel 通常被用作在技術(shù)人員與業(yè)務(wù)人員之間傳遞結(jié)構(gòu)化數(shù)據(jù)的橋梁,因其格式靈活、易于共享且用戶普遍熟悉。而將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel 文件,也因此成為實現(xiàn)報表生成、審計追蹤、數(shù)據(jù)遷移和臨時分析等需求時的一種高頻操作。
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技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
在開始編碼之前,請先確認(rèn)開發(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'李強(qiáng)', N'信息技術(shù)部', N'軟件工程師', '2020-09-15', 7200.50, 1),
(N'王芳', N'財務(wù)部', N'會計', '2019-11-20', 6300.75, 0),
(N'陳麗', N'市場部', N'內(nèi)容專員', '2021-02-10', 4800.00, 1);
如果使用 MySQL 或 SQLite,只需調(diào)整 SQL 語法與連接字符串,整體導(dǎo)出邏輯不變。
	以 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ù),并包含列標(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)
SaveToFile:可保存為 .xlsx、.xls、.csv 等格式,也可保存到流中
 
導(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);
// 自動調(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 等),其余導(dǎo)出邏輯相同。
| 問題 | 可能原因與解決方案 | 
|---|---|
| Excel 文件為空 | 檢查 DataTable 是否在導(dǎo)出前已正確填充 | 
| 文件無法保存 | 確認(rèn)保存路徑存在且有寫入權(quán)限 | 
| 無法連接數(shù)據(jù)庫 | 檢查服務(wù)器是否啟動、連接字符串是否正確 | 
| 特殊字符亂碼 | 數(shù)據(jù)庫列類型應(yīng)使用 NVARCHAR,Excel 需使用支持 Unicode 的字體 | 
| 身份驗證失敗 | Windows 身份驗證用 Integrated Security=True,SQL 身份驗證需提供用戶名與密碼 | 
通過 Spire.XLS for .NET,我們可以在 C# 中快速將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 Excel,無需安裝 Microsoft Office,且支持批量數(shù)據(jù)、格式設(shè)置和多種文件格式。 此方案可用于定時任務(wù)、后臺服務(wù)或 Web 應(yīng)用,實現(xiàn)數(shù)據(jù)的自動化導(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ū)動與連接字符串。
Q:需要安裝 Excel 嗎? A:不需要,Spire.XLS 是獨(dú)立的 Excel 處理庫。
Q:能否將多個表導(dǎo)出到同一個 Excel 文件? A:可以,創(chuàng)建多個工作表并分別插入數(shù)據(jù)即可。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務(wù)理解與管理洞察,以系統(tǒng)化的業(yè)務(wù)建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運(yùn)營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運(yùn)維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務(wù),幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費(fèi)試用,咨詢,正版銷售等于一體的專業(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)