详情

首页手游攻略 C#代码实现方式Excel与数据库之间的导入和导出操作实用指南

C#代码实现方式Excel与数据库之间的导入和导出操作实用指南

佚名 2026-11-03 09:50:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#代码实现方法Excel与数据库之间的导入和导出操作”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

在这个场景下,高效地实现不同系统之间的数据集成,有助于提升工作效率,同时为决策提供可靠的数据兼容。在这类应用场景中,Excel 与数据库之间的数据传输是一项常用需求。

实际处理时,将 Excel 文件导入数据库,能够借助数据库高效查询、事务兼容和同时发控制等功能,弥补 Excel 在这些方面的不足。另一方面,将数据库中的数据导出到 Excel,则便于进行深入分析、生成报表,以及以常用且易于采用的格式共享数据。

实际处理时,下面会介绍如何采用 C# 实现 Excel 数据与数据库之间的导入和导出操作。

安装所需依赖

从实现思路看,首先,需在 .NET 项目中添加用来处理 Excel 文件的相关 DLL 文件。你能够从官网下载所需文件,也能够借助 NuGet 安装相应的软件包。

PM> Install-Package Spire.XLS

采用 C# 将 Excel 数据导入数据库

从实现思路看,借助 Excel 文件处理库,能够采用 Workbook.LoadFromFile() 方法加载 Excel 文件,再借助 CellRange.Value 属性读取单元格数据。随后,能够借助相应的数据库操作模块(比如用来 SQLite 的 System.Data.SQLite 模块),将读取的数据写入数据库。借助这种方式,即可实现从 Excel 文件到数据库的数据导入。

在这个场景下,以下以 SQLite 为例,介绍如何采用 C# 将 Excel 数据导入数据库:

  • 定义 Excel 文件路径和目标数据库路径。
  • 新建 Workbook 类的实例,同时采用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 新建一个新的 SQLite 数据库,或连接到已有数据库。
  • 遍历工作簿中的每个工作表,同时在数据库中为每个工作表新建对应的数据表。
  • 借助 Worksheet.Rows.CellList 属性拿到第一行中的单元格。
  • 遍历这些单元格,借助 CellRange.Value 属性读取单元格内容,同时将其作为数据库表的列名。
  • 遍历其余行和单元格,将读取到的数据逐条插入数据库。
  • 关闭数据库连接并释放相关资源。

完整示例如下所示:

using System.Data.SQLite;
using Spire.Xls;

namespace ExcelToSQLite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Excel 文件路径
            string excelFilePath = "Sample.xlsx";

            // SQLite 数据库路径
            string sqliteFilePath = "output/Database.db";

            // 打开 Excel 文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);

            // 如果数据库文件不存在,则创建新文件
            if (!File.Exists(sqliteFilePath))
            {
                SQLiteConnection.CreateFile(sqliteFilePath);
                Console.WriteLine("已创建新的 SQLite 数据库文件:output.db");
            }

            // 创建 SQLite 数据库连接
            using (SQLiteConnection connection = new SQLiteConnection($"Data Source={sqliteFilePath};Version=3;"))
            {
                connection.Open();

                // 遍历每个工作表
                foreach (Worksheet sheet in workbook.Worksheets)
                {
                    string tableName = sheet.Name;

                    // 获取第一行作为列名
                    var columns = sheet.Rows[0].CellList;
                    string createTableQuery = $"CREATE TABLE IF NOT EXISTS [{tableName}] (";

                    foreach (var column in columns)
                    {
                        createTableQuery += $"[{column.Value}] TEXT,";
                    }
                    createTableQuery = createTableQuery.TrimEnd(',') + ");";

                    // 创建数据表
                    using (SQLiteCommand createTableCommand = new SQLiteCommand(createTableQuery, connection))
                    {
                        createTableCommand.ExecuteNonQuery();
                    }

                    // 插入数据
                    for (int i = 1; i < sheet.Rows.Length; i++) // 跳过第一行
                    {
                        var row = sheet.Rows[i];
                        string insertQuery = $"INSERT INTO [{tableName}] VALUES (";
                        foreach (var cell in row.CellList)
                        {
                            insertQuery += $"'{cell.Value?.Replace("'", "''")}',"; // 防止 SQL 注入
                        }
                        insertQuery = insertQuery.TrimEnd(',') + ");";

                        using (SQLiteCommand insertCommand = new SQLiteCommand(insertQuery, connection))
                        {
                            insertCommand.ExecuteNonQuery();
                        }
                    }
                }

                connection.Close();
                workbook.Dispose();
            }

            Console.WriteLine("Excel 数据已成功写入新的 SQLite 数据库!");
        }
    }
}

采用 C# 将数据库数据导出为 Excel 文件

实际处理时,同样,能够采用数据库操作模块读取数据库中的数据。随后,借助新建 Workbook 对象生成 Excel 工作簿,同时借助 CellRange.Value 属性将数据写入 Excel 文件。这样即可实现从数据库到 Excel 文件的数据导出。

在这个场景下,以下以 SQLite 数据库为例,介绍如何采用 C# 将数据库中的数据导出为 Excel 文件:

  • 定义数据库文件路径和导出的 Excel 文件路径。
  • 新建一个 Workbook 实例,用来生成新的 Excel 工作簿,同时借助 Workbook.Worksheets.Clear() 方法清除默认工作表。
  • 连接数据库,并拿到其中所有的数据表名称。
  • 采用 Workbook.Worksheets.Add() 方法,根据数据表名称新建对应的工作表。
  • 结合项目来看,拿到数据表中的列名,同时借助 Worksheet.Range[].Value 属性将其写入工作表的第一行。
  • 落到代码里,读取数据表中的内容,同时借助 Worksheet.Range[].Value 属性依次写入工作表。
  • 如有需,能够借助 CellRange.Style 属性设置工作表格式。
  • 关闭数据库连接,同时采用 Workbook.SaveToFile() 方法保存 Excel 工作簿。

完整示例如下所示:

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 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)
                {
                    string tableName = tableRow["TABLE_NAME"].ToString();

                    // 创建一个新的工作表
                    Worksheet sheet = workbook.Worksheets.Add(tableName);

                    // 获取数据表中的数据
                    string selectQuery = $"SELECT * FROM [{tableName}]";
                    using (SQLiteCommand command = new SQLiteCommand(selectQuery, connection))
                    {
                        using (SQLiteDataReader reader = command.ExecuteReader())
                        {
                            // 获取列名并写入第一行
                            for (int col = 0; col < reader.FieldCount; col++)
                            {
                                sheet.Range[1, col + 1].Value = reader.GetName(col);
                            }

                            // 设置表头字体样式
                            sheet.Rows[0].Style.Font.IsBold = true;
                            sheet.Rows[0].Style.Font.Size = 12;

                            // 写入数据行
                            int rowIndex = 2;
                            while (reader.Read())
                            {
                                for (int col = 0; col < reader.FieldCount; col++)
                                {
                                    sheet.Range[rowIndex, col + 1].Value = reader.GetValue(col).ToString();

                                    // 自动调整列宽
                                    sheet.AutoFitColumn(col + 1);
                                }

                                // 设置数据行字体样式
                                sheet.Rows[rowIndex - 1].Style.Font.Size = 11;
                                rowIndex++;
                            }
                        }
                    }
                }

                connection.Close();
            }

            // 保存 Excel 文件
            workbook.SaveToFile(excelFilePath);
            workbook.Dispose();
            Console.WriteLine("数据已成功导出到 Excel 文件!");
        }
    }
}

总结

理解这一步时,本文主要讲解了如何采用 C# 实现 Excel 与数据库之间的数据双向传输,包括将 Excel 文件中的数据导入 SQLite 数据库,以及将数据库中的数据导出为 Excel 文件。

从实现思路看,借助结合 Excel 文件处理功能与数据库操作模块,能够简化数据迁移和整理流程,减少手动复制粘贴带来的重复工作。无论是将 Excel 数据存储到数据库中,以便进行查询和管理,还是将数据库中的数据导出为 Excel,以便进一步分析和生成报表,都能提高数据处理效率。

从实现思路看,开发者能够根据实际项目需求,灵活选择合适的数据库和 Excel 处理方式,构建更高效的数据导入、导出流程。

从实现思路看,总的来说,C# Excel导入数据库适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

相关资讯
点击查看更多
游戏推荐
推荐专题
热门阅读
推荐下载