c#将Excel数据导入到数据库的实现代码

下面是详细讲解“C#将Excel数据导入到数据库的实现代码”的完整攻略:

步骤一:准备工作

在使用C#程序实现将Excel数据导入到数据库前,我们需要确保以下条件:

  1. 安装Visual Studio软件,版本不一定要求,因为该功能在各个版本中都可以实现。

  2. 引用适用于Excel数据的组件,一般为“Microsoft.Office.Interop.Excel” 数据库组件,可以在“NuGet Package Manager”中搜索安装。

接下来,我们要做的是创建两个类:用于存放每列数据的“Model”类和用于导入数据的“Service”类。

步骤二:创建Model类

public class ExcelModel
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

上述代码用于存储从Excel表格中读取出来的三列数据。如果你的Excel表格中除了这些列以外还有其他列,可以自行在Model类中添加。

步骤三:创建Service类

首先,我们需要引入“Microsoft.Office.Interop.Excel”命名空间。在该类中,我们将写入读取Excel的方法,并将读出的数据添加到我们在第二步创建的Model类中。

以下是一个示例代码:

public class ExcelService
{
    public static List<ExcelModel> ReadExcelFile(string filePath, string sheetName)
    {
        List<ExcelModel> excelData = new List<ExcelModel>();

        Application excelApp = new Application();
        Workbook excelWorkbook = excelApp.Workbooks.Open(filePath);
        Worksheet excelWorksheet = excelWorkbook.Sheets[sheetName];

        Range excelRange = excelWorksheet.UsedRange;
        int rowCount = excelRange.Rows.Count;
        int columnCount = excelRange.Columns.Count;

        for (int row = 2; row <= rowCount; row++)
        {
            ExcelModel model = new ExcelModel();
            for (int column = 1; column <= columnCount; column++)
            {
                object value = (excelRange.Cells[row, column] as Range).Value2;

                switch (column)
                {
                    case 1:
                        model.Name = value.ToString();
                        break;

                    case 2:
                        model.Age = int.Parse(value.ToString());
                        break;

                    case 3:
                        model.Gender = value.ToString();
                        break;
                }
            }
            excelData.Add(model);
        }

        excelWorkbook.Close();
        excelApp.Quit();

        return excelData;
    }
}

在该类中,我们创建了一个“ReadExcelFile”方法,该方法接收Excel文件路径和工作表名称作为输入参数。该方法将返回一个包含从Excel中读取的数据的“List”类型的值。

在该方法中,我们使用Open方法打开Excel文件,并使用“Worksheets”属性打开指定工作表。然后,我们使用“UsedRange”属性获取工作表中已使用的行数和列数。

接着,我们使用一个for循环遍历“UsedRange”中的每一列,将获取的值存储在Model类的属性中,最终将数据添加到List集合中并返回该集合。

步骤四:添加导入方法

下面是我们的示例代码:

public class ExcelDBService
{
    public static bool ImportExcelDataToDB(string filePath, string sheetName)
    {
        SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder();
        connectionStringBuilder.DataSource = "your server name";
        connectionStringBuilder.InitialCatalog = "your database name";
        connectionStringBuilder.UserID = "your user id";
        connectionStringBuilder.Password = "your password";

        string connectionString = connectionStringBuilder.ConnectionString;
        List<ExcelModel> excelData = ExcelService.ReadExcelFile(filePath, sheetName);

        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlTransaction transaction = conn.BeginTransaction())
            {
                try
                {
                    string sql = "INSERT INTO ExcelData(Name, Age, Gender) VALUES(@Name, @Age, @Gender)";
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.Transaction = transaction;

                    foreach (ExcelModel model in excelData)
                    {
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@Name", model.Name);
                        cmd.Parameters.AddWithValue("@Age", model.Age);
                        cmd.Parameters.AddWithValue("@Gender", model.Gender);
                        cmd.ExecuteNonQuery();
                    }

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    return false;
                }
            }
        }
        return true;
    }
}

在该代码片段中,我们创建了一个方法“ImportExcelDataToDB”,该方法接收Excel文件路径和工作表名称作为输入参数,并返回一个布尔值。

在该方法中,我们首先为SQL Server数据库连接字符串设置了各个必要的属性。接着,我们使用“ReadExcelFile”方法获取Excel数据并将其存储在一个List集合中。该方法将通过ForEach循环添加给定的Excel模型类的属性,然后将它们插入到数据库中的ExcelData表中。在整个过程中,我们会为每个excel数据行创建一个SqlCommand,最后检查事务中是否存在任何错误并相应地提交或回滚该事务。

步骤五:测试代码

测试代码如下:

static void Main(string[] args)
{
    string filePath = @"your excel file path";
    string sheetName = "Sheet1";

    bool result = ExcelDBService.ImportExcelDataToDB(filePath, sheetName);
    Console.WriteLine(result ? "成功将Excel数据导入数据库" : "在将Excel数据导入数据库期间发生错误");
}

在该代码段中,我们只是在控制台应用程序中使用ImportExcelDataToDB方法,并在其中传递Excel文件路径和需要导入的工作表名称。在该方法调用后,我们打印一个简单的成功或失败消息。

至此,我们详细讲解了“C#将Excel数据导入到数据库的实现代码”的完整攻略,包含两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#将Excel数据导入到数据库的实现代码 - Python技术站

(1)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 解析C#中[],List,Array,ArrayList的区别及应用

    下面我将详细讲解“解析C#中[], List, Array, ArrayList的区别及应用”的完整攻略。 []操作符 []操作符是C#语言中的数组索引操作符,用来获取数组中的元素。一个数组可以被看成是一个特殊的集合,它包含一组有相同类型的变量或对象。数组元素的下标是从0开始的,这意味着第一个元素的下标为0,第二个元素的下标为1,以此类推。 使用[]操作符访…

    C# 2023年6月1日
    00
  • Unity Sockect实现画面实时传输案例原理解析

    下面给出详细讲解“Unity Sockect实现画面实时传输案例原理解析”的完整攻略。 简介 在很多应用场景中,我们需要将实时的图像或视频流传输到另一个终端,比如远程监控、视频会议、VR/AR等应用。而Unity Sockect实现画面实时传输正是一种可以实现这种需求的方法。 原理 服务端 在服务端,我们需要使用Socket来监听一个端口,等待客户端的连接。…

    C# 2023年6月3日
    00
  • ASP.NET MVC结合JavaScript登录、校验和加密

    ASP.NET MVC结合JavaScript登录、校验和加密是一个比较常见的需求,可以通过以下步骤实现: 步骤一:创建ASP.NET MVC项目 在Visual Studio中创建ASP.NET MVC项目,选择“Empty”模板即可。 步骤二:添加登录页面 在Views文件夹下创建登录页面,命名为Login.cshtml。该页面包含用户名和密码的输入框,…

    C# 2023年5月31日
    00
  • c# Thread类的用法详解

    c#Thread类的用法详解 什么是Thread类 C#中的Thread类是用于创建和控制多线程的主要类。Thread类为开发人员提供了创建和操作线程的方法和属性。 创建Thread对象 创建Thread对象有两种主要的方法: 1. 使用Thread类的构造函数 可以通过Thread类的构造函数在程序中创建一个线程对象。Thread构造函数支持以下常见的签名…

    C# 2023年5月15日
    00
  • 在.NET中读取嵌入和使用资源文件的方法

    在.NET开发中,嵌入和使用资源文件是一个非常有用的技巧。利用资源文件,可以将特定的文件嵌入到程序集(.dll或.exe文件)中,使得程序的部署和维护更加方便。本文将详细讲解在.NET中读取嵌入和使用资源文件的方法。 嵌入资源文件 1.创建资源文件 需要将待嵌入的文件添加到资源文件中。创建资源文件的方法有两种: 手动创建:在Visual Studio中右键项…

    C# 2023年6月1日
    00
  • 浅谈C#在网络波动时防重复提交的方法

    浅谈C#在网络波动时防重复提交的方法 在Web开发中,防止重复提交是一个非常常见的问题。当网络波动或者用户重复点击提交按钮时,很容易导致重复提交。本文将介绍一些C#在防止重复提交方面的方法,希望能帮助大家解决这个问题。 方案1:使用Session来控制重复提交 在C#中,可以使用Session来控制重复提交。每次提交请求时,将表单提交的信息与Session中…

    C# 2023年6月2日
    00
  • C#简单实现发送socket字符串

    首先我们需要了解什么是Socket。Socket是用于网络通信的一种机制,可以实现进程之间的通信,也可以实现不同计算机之间的通信。它是一种可以处理网络通信数据的抽象概念,通常与TCP/IP协议族一起使用。 在C#中,我们可以使用Socket类实现网络通信。下面我们来详细讲解一下C#简单实现发送socket字符串的攻略。 第一步:创建Socket对象 我们可以…

    C# 2023年6月8日
    00
  • C#单例模式Singleton的实现详解

    C#单例模式Singleton的实现详解 单例模式是什么? 单例模式是一种创建型设计模式,其主题为确保一个类只有一个实例,并提供全局访问点。 实现单例模式 1. 延迟初始化 实现单例模式的一种简单方法是在实例化对象之前先执行一些操作。 假如我们只需要在调用该对象时才创建该对象,那么我们可以使用以下方式来实现: public class Singleton {…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部