动态

详情 返回 返回

使用 C# 從SQL數據庫讀取數據庫導出為 Excel 文件 - 动态 详情

在實際開發中,我們經常需要將數據庫中的查詢結果導出為 Excel 報表,以便進行數據分析、歸檔或分享。在這個過程中,DataTable 通常作為數據載體,而 Excel 則是最常見的導出格式之一。

本文將演示如何:

  • 從 SQL Server 數據庫讀取數據到 DataTable
  • 使用 C# 將 DataTable 插入到 Excel 文件
  • 對導出的 Excel 進行格式化美化

本示例使用 Free Spire.XLS for .NET 來操作 Excel 文件。可通過 NuGet 安裝:


Install-Package FreeSpire.XLS

從數據庫讀取 DataTable 數據

首先,我們需要從數據庫中獲取員工信息。本示例假設數據庫中存在 Employees 表:

CREATE TABLE StaffMembers (
    StaffId INT PRIMARY KEY IDENTITY,
    FullName NVARCHAR(100) NOT NULL,
    Division NVARCHAR(50) NOT NULL,
    JobTitle NVARCHAR(50),
    StartDate DATE NOT NULL,
    MonthlyPay DECIMAL(10, 2) NOT NULL,
    IsPermanent BIT NOT NULL
);

INSERT INTO StaffMembers (FullName, Division, JobTitle, StartDate, MonthlyPay, IsPermanent) VALUES
('Ethan Williams', 'Operations', 'Operations Supervisor', '2017-03-12', 6100.00, 1),
('Sophia Martinez', 'IT', 'System Administrator', '2019-07-22', 6900.40, 1),
('Liam Brown', 'Finance', 'Financial Analyst', '2021-04-18', 5750.25, 0),
('Olivia Davis', 'Sales', 'Sales Executive', '2022-09-05', 5300.00, 1);

下面是從數據庫讀取到 DataTable 的代碼:

using System.Data;
using Microsoft.Data.SqlClient;

string connectionString = @"Data Source=YourServer\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True";

DataTable dataTable = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    string query = "SELECT Id, Name, Department, Position, HireDate, Salary, IsFullTime FROM Employees";
    using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn))
    {
        adapter.Fill(dataTable);
    }
}

此時,dataTable 中已包含員工表的全部數據。


將 DataTable 導出為 Excel 文件

獲取到數據後,我們可以使用 Spire.XLS 將其導出到 Excel。

using Spire.Xls;

// 創建工作簿
Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
Worksheet sheet = workbook.Worksheets.Add("Employees Data");

// 從 A1 開始插入 DataTable,true 表示包含列標題
sheet.InsertDataTable(dataTable, true, 1, 1);

// 保存為 Excel 文件
workbook.SaveToFile("Employees.xlsx", ExcelVersion.Version2016);

使用 Worksheet.InsertDataTable() 方法即可直接插入讀取到的DataTable數據到Excel文件中。

上面代碼執行後,將生成一個包含數據庫數據的 Employees.xlsx 文件:

C#導出數據庫到Excel文件


設置 Excel 樣式

為了讓導出的 Excel 更易讀,我們可以對錶頭、數據行、邊框和列寬進行美化:

using System.Drawing;

// 表頭樣式
CellRange headerRow = sheet.Rows[0];
headerRow.Style.Font.IsBold = true;
headerRow.Style.Font.Size = 14;
headerRow.Style.Font.FontName = "Calibri";
headerRow.Style.Color = Color.LightSteelBlue;
headerRow.Style.HorizontalAlignment = HorizontalAlignType.Center;

// 數據行樣式
for (int i = 1; i < sheet.Rows.Count(); i++)
{
    CellRange dataRow = sheet.Rows[i];
    dataRow.Style.Font.Size = 12;
    dataRow.Style.Font.FontName = "Segoe UI";
    dataRow.Style.HorizontalAlignment = HorizontalAlignType.Left;
}

// 日期列格式化
CellRange dateColumn = sheet.Range[2, 5, sheet.Rows.Count(), 5];
dateColumn.Style.NumberFormat = "yyyy-mm-dd";

// 數字列格式化(薪資)
CellRange salaryColumn = sheet.Range[2, 6, sheet.Rows.Count(), 6];
salaryColumn.Style.NumberFormat = "#,##0.00";

// 設置邊框
sheet.AllocatedRange.BorderAround(LineStyleType.Medium, Color.Black);
sheet.AllocatedRange.BorderInside(LineStyleType.Thin, Color.Gray);

// 自動調整列寬
sheet.AllocatedRange.AutoFitColumns();

// 保存文件
workbook.SaveToFile("Employees_Styled.xlsx", ExcelVersion.Version2016);

效果如下:

  • 表頭加粗、背景色突出
  • 日期格式化為 yyyy-mm-dd
  • 薪資顯示兩位小數並千分位分隔
  • 自動調整列寬
  • 添加邊框,整體表格更清晰

生成的Excel文件:

C#導出數據庫到Excel文件並設置格式


總結

本文介紹瞭如何:

  1. 從 SQL Server 數據庫讀取 DataTable 數據
  2. 使用 Spire.XLS 將 DataTable 導出為 Excel
  3. 對導出的 Excel 文件進行樣式美化

這種方法適用於 企業報表導出、數據歸檔、後台管理系統下載數據 等場景,既能保證數據完整性,又能提升可讀性。

如果需要實現 公式、圖表、條件格式 等高級功能,可以參考 Spire.XLS 官方文檔。

user avatar caisekongbai 头像 daishuyunshuzhanqianduan 头像 daimajiangxin 头像
点赞 3 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.