随着企业业务的增长和复杂性的增加,对数据进行有效的分析、共享和报告变得至关重要;而Excel,作为一款广泛接受的数据处理工具,提供了强大的计算能力、可视化选项以及与多种数据分析工具的兼容性,使得它成为从数据库导出数据的理想选择。通过利用C#编程语言的强大特性和丰富的.NET库支持,开发人员不仅能够高效地完成从数据库到Excel文件的数据迁移,还可以根据特定业务逻辑定制导出过程,确保数据的准确性和完整性,同时提升用户体验并满足不同用户的报表需求。
本文将介绍如何在.NET平台使用C#代码导出数据库数据到Excel文件。
本文所使用的方法需要用到,免费的Free Spire.XLS for .NET,以及System.Data.SQLite和System.Data.OleDb。NuGet:
PM> Install-Package FreeSpire.XLS
PM> Install-Package System.Data.SQLite
PM> Install-Package System.Data.OleDb
导出SQLite数据库到Excel文件
System.Data.SQLite
模块可以直接从SQLite数据库文件中读取数据。读取到数据之后,我们可以使用Free Spire.XLS for .NET创建Excel文件并将数据写入其中。以下是操作步骤及代码示例:
- 定义文件路径
- 设置SQLite数据库文件路径为
Sample.db
。 - 设置Excel输出文件路径为
output/DatabaseToExcel.xlsx
。
- 设置SQLite数据库文件路径为
- 创建Excel工作簿实例
- 创建一个新的
Workbook
实例以表示要导出的Excel文件。 - 清除默认包含的工作表,确保工作簿为空。
- 创建一个新的
- 建立SQLite连接
- 使用
SQLiteConnection
类创建一个到SQLite数据库的新连接,并通过提供数据源和版本号来初始化连接字符串。 - 打开与SQLite数据库的连接。
- 使用
- 获取数据库中的所有表名
- 通过调用
GetSchema("Tables")
方法从数据库中获取所有表的名字,并将结果存储在一个DataTable
对象中。
- 通过调用
- 遍历每个表并处理
- 遍历
DataTable
对象中的每一行,提取表名。 - 对于每个表,添加一个新的工作表到Excel工作簿中,并将工作表命名为对应的表名。
- 遍历
- 读取表数据并写入Excel
- 构建SQL查询语句以选择当前表中的所有数据,并使用
SQLiteCommand
执行此查询。 - 使用
SQLiteDataReader
读取查询结果:- 获取列名并将它们写入新工作表的第一行。
- 设置第一行(即标题行)的字体样式为粗体,字号为12。
- 遍历数据行,将每一行的数据值写入相应的单元格中,同时自动调整每列的宽度以适应内容。
- 设置数据行的字体大小为11。
- 构建SQL查询语句以选择当前表中的所有数据,并使用
- 关闭数据库连接
- 完成所有表的数据读取和写入后,关闭与SQLite数据库的连接。
- 保存Excel文件
- 将生成的工作簿保存到之前定义的Excel文件路径。
- 释放
workbook
对象使用的资源。
代码示例
using System.Data;
using System.Data.SQLite;
using Spire.Xls;
namespace SQLiteToExcel
{
class Program
{
static void Main(string[] args)
{
// SQLite数据库路径
string sqliteFilePath = "Sample.db";
// Excel文件路径
string excelFilePath = "output/DatabaseToExcel.xlsx";
// 创建一个新的工作簿实例
Workbook workbook = new Workbook();
// 清除默认的工作表
workbook.Worksheets.Clear();
// 创建SQLite连接
using (SQLiteConnection connection = new SQLiteConnection($"Data Source={
sqliteFilePath};Version=3;"))
{
connection.Open();
// 获取所有表名
DataTable tables = connection.GetSchema("Tables");
// 遍历每个表
foreach (DataRow tableRow in tables.Rows