当前位置: 首页 > news >正文

国产化Excel处理组件Spire.XLS教程:使用 C# 从数据库导出数据到 Excel(含 SQL 示例)

在企业应用开发中,Excel 通常被用作在技术人员与业务人员之间传递结构化数据的桥梁,因其格式灵活、易于共享且用户普遍熟悉。而将数据库数据导出为 Excel 文件,也因此成为实现报表生成、审计追踪、数据迁移和临时分析等需求时的一种高频操作。

E-iceblue旗下Spire系列产品是文档开发领域的佼佼者,支持国产化信创。本文将介绍如何使用 Spire.XLS for .NET 通过 C# 将数据库记录高效导出到 Excel 文件。示例以 SQL Server 数据库为基础,但相同方法也适用于 SQLite、MySQL、Oracle 等其他关系型数据库,只需调整连接方式即可。

Spire.XLS for .NET试用下载

准备工作

在开始编码之前,请先确认开发环境已就绪:

  • .NET 版本:支持 .NET Framework 及 .NET Core / .NET 6 / .NET 8
  • IDE:Visual Studio(社区版及以上版本均可)
  • 数据库:本文示例使用 SQL Server Express,采用 Windows 身份验证(也可改为 SQL 身份验证)
  • 必需库
    • Spire.XLS for .NET(NuGet 安装:Install-Package Spire.XLS)
    • Microsoft.Data.SqlClient(SQL Server 访问驱动,NuGet 安装)

示例数据库

以下 SQL 脚本在 SQL Server Express 中创建一个 Employees 表并插入测试数据:

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'人事经理', '2018-05-01', 5500.00, 1),
(N'李强', N'信息技术部', N'软件工程师', '2020-09-15', 7200.50, 1),
(N'王芳', N'财务部', N'会计', '2019-11-20', 6300.75, 0),
(N'陈丽', N'市场部', N'内容专员', '2021-02-10', 4800.00, 1);

如果使用 MySQL 或 SQLite,只需调整 SQL 语法与连接字符串,整体导出逻辑不变。

用 C# 将数据库数据导出到 Excel

1. 建立数据库连接

以 SQL Server Express 为例,使用 SqlConnection 建立连接:

string connectionString = @"Data Source=YourServer\SQLEXPRESS;Initial Catalog=YourDatabaseName;Integrated Security=True;";
  • Windows 身份验证:Integrated Security=True
  • SQL 身份验证: User ID=yourUsername;Password=yourPassword;Encrypt=True;TrustServerCertificate=True

2. 将数据读取到 DataTable

使用 SqlDataAdapter 执行查询并填充 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 导出到 Excel

using Spire.Xls;Workbook workbook = new Workbook();
workbook.Worksheets.Clear();
Worksheet sheet = workbook.Worksheets.Add("Employees");// 从第 1 行第 1 列插入 DataTable 数据,并包含列标题
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 定义数据起始位置(基于 1 索引)
  • SaveToFile:可保存为 .xlsx、.xls、.csv 等格式,也可保存到流中

优化 Excel 格式(可选但推荐)

导出数据后,可以通过以下方式提高可读性:

// 表头样式
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;// 数据行样式
for (int i = 1; i < sheet.Rows.Count(); i++)
{var dataRow = sheet.Rows[i];dataRow.Style.Font.Size = 12;dataRow.Style.HorizontalAlignment = HorizontalAlignType.Left;
}// 设置全局字体
sheet.AllocatedRange.Style.Font.FontName = "微软雅黑";// 添加边框
sheet.AllocatedRange.BorderAround(LineStyleType.Thin, System.Drawing.Color.Black);
sheet.AllocatedRange.BorderInside(LineStyleType.Medium, System.Drawing.Color.Black);// 自动调整列宽
sheet.AllocatedRange.AutoFitColumns();

其他数据读取方式

除了 DataTable 之外,你还可以:

  • 使用 Entity Framework

var employees = dbContext.Employees.ToList();
  • 然后将集合转换为 DataTable 或逐行写入 Excel。

  • 调用存储过程

SqlCommand cmd = new SqlCommand("GetEmployees", conn);
cmd.CommandType = CommandType.StoredProcedure;
  • 读取 SQLite / MySQL / Oracle 只需更换连接类型和驱动(Microsoft.Data.Sqlite、MySql.Data 等),其余导出逻辑相同。

常见问题与解决方法

问题可能原因与解决方案
Excel 文件为空检查 DataTable 是否在导出前已正确填充
文件无法保存确认保存路径存在且有写入权限
无法连接数据库检查服务器是否启动、连接字符串是否正确
特殊字符乱码数据库列类型应使用 NVARCHAR,Excel 需使用支持 Unicode 的字体
身份验证失败Windows 身份验证用 Integrated Security=True,SQL 身份验证需提供用户名与密码

总结

通过 Spire.XLS for .NET,我们可以在 C# 中快速将数据库数据导出为 Excel,无需安装 Microsoft Office,且支持批量数据、格式设置和多种文件格式。 此方案可用于定时任务、后台服务或 Web 应用,实现数据的自动化导出与分发。

常见问题解答

Q:如何在 C# 中将 SQL 数据导出到 Excel? A:使用 SqlConnection 读取数据到 DataTable,再调用 Spire.XLS 的 InsertDataTable() 方法即可。

Q:支持导出 SQLite 或 MySQL 数据吗? A:支持,只需更换数据库驱动与连接字符串。

Q:需要安装 Excel 吗? A:不需要,Spire.XLS 是独立的 Excel 处理库。

Q:能否将多个表导出到同一个 Excel 文件? A:可以,创建多个工作表并分别插入数据即可。

http://www.dtcms.com/a/337058.html

相关文章:

  • Android使用Kotlin协程+Flow实现打字机效果
  • 【内网渗透】CVE-2020-0796 永恒之黑 复现
  • 19.8 《3步实现OPT-6.7B无损量化:用自定义数据集省70%显存,精度仅跌2.3%》
  • (Arxiv-2025)OPENS2V-NEXUS:一个面向主体到视频生成的详细基准与百万规模数据集
  • 设计模式笔记_行为型_迭代器模式
  • 云计算核心技术之容器技术
  • Linux设备树简介
  • LINUX 818 shell:random;for for
  • 电子元器件-电阻终篇:基本原理,电阻分类及特点,参数/手册详解,电阻作用及应用场景,电阻选型及实战案例
  • Docker常见指令速查
  • 矿物分类案例(二)数据填充后使用6种模型训练
  • Docker学习--认识Docker
  • 遥感机器学习入门实战教程 | Sklearn 案例②:PCA + k-NN 分类与评估
  • AWS Neptune:图数据库的强大潜力
  • 【LLM1】大型语言模型的基本生成机制
  • 将 iPhone 连接到 Windows 11 的完整指南
  • Chromium base 库中的 Observer 模式实现:ObserverList 与 ObserverListThreadSafe 深度解析
  • AI 在金融领域的落地案例
  • 强化学习-CH2 状态价值和贝尔曼等式
  • 算法详细讲解:数据结构 - 单链表与双链表
  • Nacos-6--Naco的QUIC协议实现高可用的工作原理
  • cesium中实时获取鼠标精确坐标和高度
  • IB数学课程知识点有哪些?IB数学课程辅导机构怎么选?
  • GitLab 安全漏洞 CVE-2025-7739 解决方案
  • GitLab 安全漏洞 CVE-2025-6186 解决方案
  • AI全链路赋能:smardaten2.0实现软件开发全流程智能化突破
  • Leetcode 3651. Minimum Cost Path with Teleportations
  • 嵌入式 C++ 语言编程规范文档个人学习版(参考《Google C++ 编码规范中文版》)
  • USB基础 -- 字符串描述符 (String Descriptor) 系统整理文档
  • 2025年8月更新!Windows 7 旗舰版 (32位+64位 轻度优化+离线驱动)