C#窗体读取EXCEL并存入SQL数据库的方法

下面我为你详细讲解“C#窗体读取EXCEL并存入SQL数据库的方法”的完整攻略。

一、准备工作

在开始编写代码前,需要先安装以下几个组件:

  1. Microsoft.Office.Interop.Excel (用于读取Excel文件);
  2. System.Data.SqlClient (用于操作SQL数据库)。

二、读取Excel文件

首先,需要引入Microsoft.Office.Interop.Excel dll:

using Excel = Microsoft.Office.Interop.Excel;

读取Excel文件的核心代码如下所示:

// 创建Excel对象
Excel.Application excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Open(filePath);

// 读取页签
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[sheetName];

// 获取行数和列数
int rowsCount = worksheet.UsedRange.Rows.Count;
int columnsCount = worksheet.UsedRange.Columns.Count;

// 遍历每一行
for (int i = 2; i <= rowsCount; i++)
{
  // 读取每一行数据中的每一列
  for (int j = 1; j <= columnsCount; j++)
  {
    string cellValue = ((Range)worksheet.Cells[i, j]).Text.ToString();
    // 将数据存入对象或数组中
  }
}

// 释放Excel对象
workbook.Close(false);
excel.Quit();

三、存入SQL数据库

在读取Excel文件后,需要将读取的数据存入SQL数据库。需要注意的是,必须对读取的Excel数据进行类型转换,以便与数据库表中的数据类型匹配。

操作SQL数据库的核心代码如下所示:

// 连接数据库
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand();
command.Connection = connection;

connection.Open();

// 将数据插入到数据库中
string sql = "INSERT INTO 表名 (字段1, 字段2, ...) VALUES (@字段1, @字段2, ...)";
command.CommandText = sql;
command.Parameters.AddWithValue("@字段1", 值1);
command.Parameters.AddWithValue("@字段2", 值2);
// 添加其他字段和值

command.ExecuteNonQuery();

connection.Close();

四、示例说明

下面给出两个示例,分别是读取Excel文件和存入SQL数据库的完整代码:

1. 示例一:读取Excel文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApp1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // 打开文件选择对话框
      OpenFileDialog openFile = new OpenFileDialog();
      openFile.Filter = "Excel文件|*.xlsx;*.xls";
      if (openFile.ShowDialog() == DialogResult.OK)
      {
        // 获取选择的Excel文件路径和名称
        string filePath = openFile.FileName;
        string sheetName = "Sheet1"; // 指定页签名称

        // 创建Excel对象
        Excel.Application excel = new Excel.Application();
        Excel.Workbook workbook = excel.Workbooks.Open(filePath);

        // 读取页签
        Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[sheetName];

        // 获取行数和列数
        int rowsCount = worksheet.UsedRange.Rows.Count;
        int columnsCount = worksheet.UsedRange.Columns.Count;

        // 遍历每一行
        for (int i = 2; i <= rowsCount; i++)
        {
          // 读取每一行数据中的每一列
          for (int j = 1; j <= columnsCount; j++)
          {
            string cellValue = ((Excel.Range)worksheet.Cells[i, j]).Text.ToString();
            // 将数据存入对象或数组中
          }
        }

        // 释放Excel对象
        workbook.Close(false);
        excel.Quit();
      }
    }
  }
}

2. 示例二:存入SQL数据库

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.Data.SqlClient;

namespace WindowsFormsApp1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // 读取Excel文件
      // ...

      // 连接数据库
      string connectionString = "Server=servername;Database=dbname;User Id=username;Password=password;";
      SqlConnection connection = new SqlConnection(connectionString);
      SqlCommand command = new SqlCommand();
      command.Connection = connection;

      connection.Open();

      // 将数据插入到数据库中
      string sql = "INSERT INTO 表名 (字段1, 字段2, ...) VALUES (@字段1, @字段2, ...)";
      command.CommandText = sql;
      command.Parameters.AddWithValue("@字段1", 值1);
      command.Parameters.AddWithValue("@字段2", 值2);
      // 添加其他字段和值

      command.ExecuteNonQuery();

      connection.Close();
    }
  }
}

以上就是“C#窗体读取EXCEL并存入SQL数据库的方法”的完整攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#窗体读取EXCEL并存入SQL数据库的方法 - Python技术站

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

相关文章

  • ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

    ASP.NET Core 2.0 使用支付宝PC网站支付实现代码 本攻略主要介绍如何使用ASP.NET Core 2.0实现支付宝PC网站支付。支付宝PC网站支付是一种快速、安全、便捷的支付方式,在许多电商网站中得到了广泛的应用。 实现流程 在支付宝开发平台创建应用并获取应用APPID和应用私钥。 集成支付宝PC网站支付SDK。 构建支付请求参数。 通过HT…

    C# 2023年5月31日
    00
  • C#编写DES加密、解密类

    C#编写DES加密、解密类 DES是一种对称加密算法,其全称为Data Encryption Standard。在现代通讯、网络、存储、金融等各个领域都起到了不可替代的数据加密保护作用。在C#中,可以通过编写DES加密、解密类来实现数据加密与解密操作。 1.创建DES加密、解密类 首先,我们需要创建一个类来封装DES加密、解密操作。可以参照下面的代码: us…

    C# 2023年6月7日
    00
  • C#判断字符串是否是数字(实例)

    下面是关于“C#判断字符串是否是数字(实例)”的详细攻略。 标题 问题描述 如何在C#中判断一个字符串是否是数字? 解决方案 C#中判断字符串是否是数字,常用的有以下三种方法: 使用double.TryParse()方法 使用int.TryParse()方法 使用正则表达式 下面我们将详细介绍这三种方法。 方法一:使用double.TryParse()方法 …

    C# 2023年6月8日
    00
  • .net中as和is之间的区别分析

    我来为你详细讲解一下“.net中as和is之间的区别分析”。 1. as和is的基本使用 在.NET中,as和is都是类型操作符,用于类型转换或类型检查。 1.1 as操作符 as操作符用于将一个引用类型转换为另外一个引用类型,或将一个类类型转换为其派生类型。如果转换失败,则as返回null,而不是抛出异常。例子如下: object obj = "…

    C# 2023年5月31日
    00
  • C# Winform 调用系统接口操作 INI 配置文件的代码

    关于C# Winform调用系统接口操作INI配置文件的代码,下面是详细的攻略: 1. 什么是INI文件 INI文件是一种配置文件格式,全称叫做Initial file,是一种比较老式的配置文件格式。它的结构非常简单,通常包含了若干个节(section)和各个节下的键值对(key-value pair)。INI文件的格式如下: [section1] key1…

    C# 2023年6月7日
    00
  • 详解Unity安卓共享纹理

    详解Unity安卓共享纹理 在Unity中,可以使用共享纹理(Shared Texture)技术将应用程序中的纹理共享到其他应用程序中,从而实现数据共享的目的。本文将详细介绍Unity中如何实现安卓共享纹理,并提供两条示例来帮助读者更好地理解。 准备工作 在开始之前,我们需要做一些准备工作: 确保你的Unity版本在2017.1或以上。因为共享纹理技术需要G…

    C# 2023年5月15日
    00
  • C#编程获取实体类属性名和值的方法示例

    下面就是“C#编程获取实体类属性名和值的方法示例”的完整攻略。 什么是实体类 在使用C#编程时,有一种很常用的数据结构,就是实体类。实体类指的是一个带有属性(Property)的类,每个属性都代表了一个数据项。例如,在一个用户登录的页面中,我们可能会用到一个实体类表示用户信息,它包括用户名、密码、电子邮件地址等属性。 如何获取实体类属性名和值 在编写程序时,…

    C# 2023年5月31日
    00
  • C#中执行批处理文件(*.bat)的方法代码

    执行批处理文件是指在C#程序中通过代码来执行批处理文件(*.bat),实现对其他程序或系统命令的控制。下面是执行批处理文件的完整攻略: 1. 利用Process类来执行批处理文件 在C#中,可以使用Process类来启动一个进程并执行批处理文件。Process类提供了Start方法用于启动一个程序,该方法可以接受一个ProcessStartInfo对象作为参…

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