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数据导入到数据库的实现代码”的完整攻略,包含两条示例说明。

阅读剩余 71%

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

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

相关文章

  • c#调用arcgis地图rest服务示例详解(arcgis地图输出)

    在介绍 “C#调用ArcGIS地图REST服务示例详解(ArcGIS地图输出)”这个话题之前,简单介绍一下ArcGIS。 ArcGIS是一款专业的地理信息系统软件,全称“Environmental Systems Research Institute (ESRI) ArcGIS”。ArcGIS提供了从数据收集到最终生产的一整套地理信息系统软件。ArcGIS中…

    C# 2023年5月31日
    00
  • C#使用iCSharpcode进行文件压缩实现方法

    下面是“C#使用iCSharpcode进行文件压缩实现方法”的完整攻略。 1. 引入iCSharpcode.SharpZipLib库 在C#中使用iCSharpcode进行文件压缩需要引入其提供的SharpZipLib库。可以通过NuGet来引入,也可以直接下载安装至本地项目中。 2. 使用ZipOutputStream进行文件压缩 压缩一个文件可以使用如下…

    C# 2023年6月1日
    00
  • C# 设置Chart的X轴为时间轴​​​​​​​详情

    下面我为您详细讲解一下“C# 设置Chart的X轴为时间轴”的完整攻略,过程中包含两条示例。 前置知识 在了解如何设置Chart的X轴为时间轴之前,您需要掌握以下知识: C#语言基础 Chart控件使用基础 时间格式化 设定X轴为时间轴 Chart控件中的轴(Axis)类物件,其中有多种轴如X轴、Y轴以及二级轴等等,而控制X轴显示类型的属性有AxisType…

    C# 2023年5月15日
    00
  • 手把手教你如何基于C#制作一个网址检测工具

    手把手教你基于C#制作一个网址检测工具 简介 网址检测工具是一种用来检测网址是否可用的工具,可以帮助用户快速定位网站故障原因,提高用户的使用体验。该教程框架基于C#语言,本文将详细阐述如何基于C#制作一个网址检测工具。 准备工作 在开始之前,请先安装好 .NET环境,并下载安装 Visual Studio。 实现步骤 1. 创建项目 在 Visual Stu…

    C# 2023年6月6日
    00
  • 使用 HttpReports 监控 .NET Core 应用程序的方法

    在本攻略中,我们将详细讲解如何使用HttpReports监控.NET Core应用程序,并提供两个示例说明。 什么是HttpReports? HttpReports是一个基于.NET Core的开源应用程序性能监控工具,可以监控应用程序的性能指标、请求响应时间、错误率等。HttpReports提供了一个Web界面,可以方便地查看应用程序的性能数据。 使用Ht…

    C# 2023年5月16日
    00
  • 详解C# Protobuf如何做到0分配内存的序列化

    C# protobuf是Google开发的一种高效的序列化格式。相较于其他序列化方式(比如XML或Json),它所占用的空间更少,同时速度更快,因为它是二进制序列化格式。在进行序列化过程中,内存的分配是一个非常重要的问题,因为大量的内存分配会导致性能下降甚至内存溢出。本文将详细介绍C# protobuf如何实现0分配内存的序列化。 一、使用“MemorySt…

    C# 2023年5月31日
    00
  • des加密解密源码 C# key值问题分析

    以下是关于“des加密解密源码 C# key值问题分析”的完整攻略: 1. DES加密解密简介 DES(Data Encryption Standard),即数据加密标准,是一种对称加密算法。在加密和解密时使用同样的密钥,因此也称为共享密钥加密算法。DES算法由美国国家标准局(National Institute of Standards and Techn…

    C# 2023年6月8日
    00
  • Netcore磊科路由器无线MAC地址过滤图解教程

    Netcore磊科路由器无线MAC地址过滤图解教程如下: 步骤一:登录路由器 首先,需要登录到 Netcore 磊科路由器的管理界面。在浏览器中输入路由器的 IP 地址,然后输入用户名和密码进行登录。 步骤二:进入无线设置页面 在登录成功后,进入路由器的无线设置页面。在页面中找到“MAC地址过滤”选项,并点击进入。 步骤三:启用MAC地址过滤 在“MAC地址…

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