IRONSOFTWAREHOME
USING IRONXL

如何在 C# 中将 Excel 导入 SQL Server

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在许多不同的商业环境中,将数据从 Excel 导入 SQL Server 是一项典型的必要操作。 这项活动涉及的任务包括:从 Excel 文件中读取数据并将其输入到 SQL Server 数据库中。 虽然导出向导经常被使用,但 IronXL 提供了一种更程序化、更灵活的数据处理方法。 IronXL 是一个功能强大的 C# 库,可以从文件中导入 Excel 数据; 因此,有可能加快这项操作。 为此,本文将提供一个全面的操作指南,介绍如何使用 C# 配置、执行和增强将 Excel 导入 SQL Server 的功能。

如何在C#中将Excel导入到SQL Server:图1 - IronXL:C# Excel库

How to Import Excel to SQL Server in C#

  1. 设置开发环境
  2. 准备您的 Excel 文件
  3. 连接到您的 SQL Server 数据库
  4. 使用 IronXL 从 Excel 文件中读取数据
  5. 使用 IronPDF 导出数据并生成 PDF 报告
  6. 查看PDF报告

什么是 IronXL?

IronXL,有时也称为 IronXL.Excel,是一个功能丰富的 C# 库,旨在简化 .NET 应用程序中处理 Excel 文件的操作。 这款功能强大的工具非常适合服务器端应用程序,因为它使开发人员能够读取、创建和编辑 Excel 文件,而无需在计算机上安装 Microsoft Excel。 IronXL 支持 Excel 2007 及更高版本 (.xlsx) 和 Excel 97–2003 (.xls) 格式,在管理各种 Excel 文件版本方面提供了灵活性。 它允许进行大量的数据操作,例如操作工作表、行和列,以及插入、更新和删除数据。

IronXL 还支持单元格格式设置和 Excel 公式,能够以编程方式生成复杂且格式良好的电子表格。 IronXL 具有性能优化,并兼容多个 .NET 平台,包括 .NET Framework、.NET Core 和 .NET 5/6,能够有效处理海量数据集。 对于希望将 Excel 文件操作集成到其应用程序中的开发人员来说,无论是简单的数据导入/导出活动还是复杂的报告系统,它都是一个灵活的选择,因为它与其他 .NET Framework的接口非常流畅。

主要功能

读取和写入 Excel 文件

开发人员可以使用 IronXL 从 Excel 文件读取和写入数据。 创建新的 Excel 文件和编辑现有文件都很简单。

无需安装 Microsoft Excel

与某些其他库不同,IronXL 不需要在运行该应用程序的计算机上安装 Microsoft Excel。 因此,它非常适合服务器端应用程序。

支持多种Excel格式

该库通过支持 .xls(Excel 97-2003)和 .xlsx(Excel 2007 及更高版本)格式,提供了管理各种 Excel 文件类型的多功能性。

创建新的Visual Studio项目

创建 Visual Studio 控制台项目很简单。 在 Visual Studio 中,执行以下操作以创建控制台应用程序:

1.**打开 Visual Studio:**请确保在打开之前已在计算机上安装了 Visual Studio。 2. **开始一个新项目:**选择File -> New -> Project

如何在C#中将Excel导入到SQL Server:图2 - 点击新建

  1. Create a new project框的左侧面板中选择您偏好的编程语言,例如C#。
  2. 从可用项目模板列表中选择Console App (.NET Core)模板。
  3. 在**"名称"**区域,给你的项目起个名字。

如何在C#中将Excel导入到SQL Server:图3 - 提供一个名称和保存位置

  1. 确定项目保存位置。
  2. 单击**"创建"**以启动控制台应用程序项目。

如何在C#中将Excel导入到SQL Server:图4 - 最后点击创建以启动应用程序

安装IronXL库

由于即将进行更新,因此需要安装 IronXL 库。 最后,要完成此过程,请启动 NuGet 包管理器控制台并键入以下命令:

PM > Install-Package IronXL.Excel

如何在C#中将Excel导入到SQL Server:图5 - 在NuGet包管理器控制台中输入上述命令以安装IronXL

使用NuGet包管理器搜索IronXL包是另一种方法。 这样我们就可以选择要下载与 IronXL 关联的哪些 NuGet 包。

如何在C#中将Excel导入到SQL Server:图6 - 或者使用NuGet包管理器搜索IronXL并安装

使用 IronXL 将 Excel 导入 SQL

使用 IronXL 从 Excel 读取数据

using IronXL 可以更轻松地从 Excel 文件中读取数据。 以下示例展示了如何使用 IronXL 从 Excel 文件中读取数据。这种方法会将数据读取并保存到一个字典列表中,每个字典对应于 Excel 工作表中的一行。

using IronXL;
using System;
using System.Collections.Generic;

public class ExcelReader
{
    public static List<Dictionary<string, object>> ReadExcelFile(string filePath)
    {
        // Initialize a list to store data from Excel
        var data = new List<Dictionary<string, object>>();

        // Load the workbook from the file path provided
        WorkBook workbook = WorkBook.Load(filePath);

        // Access the first worksheet in the workbook
        WorkSheet sheet = workbook.WorkSheets[0];

        // Retrieve column headers from the first row
        var headers = new List<string>();
        foreach (var header in sheet.Rows[0].Columns)
        {
            headers.Add(header.ToString());
        }

        // Loop through each row starting from the second row
        for (int i = 1; i < sheet.Rows.Count; i++)
        {
            // Create a dictionary to store the row data associated with column headers
            var rowData = new Dictionary<string, object>();
            for (int j = 0; j < headers.Count; j++)
            {
                rowData[headers[j]] = sheet.Rows[i][j].Value;
            }
            data.Add(rowData);
        }

        return data;
    }
}

正在连接到 SQL Server

使用System.Data.SqlClient命名空间建立与SQL Server的连接。 请确保您拥有正确的连接字符串,该字符串通常由数据库名称、服务器名称和身份验证信息组成。 以下示例介绍了如何连接到 SQL Server 数据库并添加数据。

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;

public class SqlServerConnector
{
    private string connectionString;

    // Constructor accepts a connection string
    public SqlServerConnector(string connectionString)
    {
        this.connectionString = connectionString;
    }

    // Inserts data into the specified table
    public void InsertData(Dictionary<string, object> data, string tableName)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();

            // Construct an SQL INSERT command with parameterized values to prevent SQL injection
            var columns = string.Join(",", data.Keys);
            var parameters = string.Join(",", data.Keys.Select(key => "@" + key));
            string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})";

            using (SqlCommand command = new SqlCommand(query, connection))
            {
                // Add parameters to the command
                foreach (var kvp in data)
                {
                    command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value);
                }

                // Execute the command
                command.ExecuteNonQuery();
            }
        }
    }
}

将 IronXL 与 SQL Server 结合使用

一旦建立了读取 Excel 文件并将数据插入 SQL 数据库的逻辑,就将这些功能集成起来以完成导入过程。 接下来的应用程序会从 Excel 文件接收信息,并将其添加到 Microsoft SQL Server 数据库中。

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // Define the path to the Excel file, SQL connection string, and target table name
        string excelFilePath = "path_to_your_excel_file.xlsx";
        string connectionString = "your_sql_server_connection_string";
        string tableName = "your_table_name";

        // Read data from Excel
        List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath);

        // Create an instance of the SQL connector and insert data
        SqlServerConnector sqlConnector = new SqlServerConnector(connectionString);
        foreach (var row in excelData)
        {
            sqlConnector.InsertData(row, tableName);
        }

        Console.WriteLine("Data import completed successfully.");
    }
}

这个类负责使用IronXL从指定的Excel文件中读取数据。ReadExcelFile函数加载Excel工作簿,打开第一个工作表,并通过循环遍历数据工作表的行来收集数据。 为了便于处理表格,信息保存在字典列表中。

如何在C#中将Excel导入到SQL Server:图7 - 示例输入Excel文件

该类会将数据插入到指定的数据库表中,同时还会管理与 SQL Server 数据库的连接。 InsertData方法使用参数化查询来防止SQL注入,并根据字典的键(代表列名)动态构建SQL INSERT查询。

使用SqlServerConnector类将每一行插入到SQL Server表中,Main函数管理整个过程。

如何在C#中将Excel导入到SQL Server:图8 - 输出展示在SQL Server上成功的查询

错误处理和优化对于确保稳健高效的导入过程至关重要。 实施健全的错误处理机制可以管理诸如文件丢失、数据格式无效和 SQL 异常等潜在问题。 以下是加入错误处理的示例。

try
{
    // Insert the importing logic here
}
catch (Exception ex)
{
    Console.WriteLine("An error occurred: " + ex.Message);
}

结论

最后,在 .NET 应用程序中管理 Excel 文件的一种有效且可靠的方法是使用 C# 和 IronXL 将数据从 Excel 导入到 MS SQL 数据库中。 IronXL 兼容多种 Excel 格式,并具有强大的功能,无需安装 Microsoft Excel 即可轻松读取和写入 Excel 数据。 通过将System.Data.SqlClient与IronXL集成,开发人员可以轻松地在SQL Server之间移动数据,使用参数化查询以提高安全性并防止SQL注入。

最后,将 IronXL 和 Iron Software 添加到您的 .NET 开发工具集中,可以高效地操作 Excel、创建 PDF、进行 OCR 和使用条形码。 将 Iron Software 的灵活套件与 IronXL 的易用性、互操作性和性能相结合,可保证简化开发流程并提高应用程序功能。 凭借清晰的许可选项和可根据项目需求定制的方案,开发人员可以自信地选择合适的模式。 利用这些优势,开发人员可以有效地应对各种难题,同时保持合规性和开放性。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户