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

yizhihongxing

下面我为你详细讲解“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日

相关文章

  • Unity InputFiled TMP属性和各种监听示例详解

    Unity InputField TMP属性和各种监听示例详解 什么是InputField? InputField是Unity中的一个UI控件,它可以让用户在UI界面中输入文本。InputField通常结合TextMeshPro(简称TMP)组件使用,用于控制文本的显示。InputField有丰富的属性和事件可以掌控,本文将详细解析。 InputField常…

    C# 2023年6月3日
    00
  • C#使用反射机制实现延迟绑定

    让我们来详细讲解一下“C#使用反射机制实现延迟绑定”的完整攻略。 什么是反射机制 反射机制是一种程序在运行时动态获取其类型信息并操作的能力。它可以让我们在不知道某个类型的具体信息的情况下,通过程序获取该类型的信息并使用它。C#提供了良好的反射机制支持,我们可以使用System.Reflection命名空间下的类来实现。 反射机制的作用 反射机制可以让我们在运…

    C# 2023年6月7日
    00
  • C#实现写系统日志的方法

    首先,我们需要了解什么是系统日志。 系统日志(Syslog) 是一种由大多数操作系统和一些网络设备所产生和使用的标准化的日志记录方式,通常用于记录系统事件以及系统性能数据等,以便于系统管理员进行故障诊断和维护工作。 在 C# 中,我们可以通过 System.Diagnostics 命名空间下的 EventLog 类来记录系统日志。 以下是实现 C# 写系统日…

    C# 2023年5月15日
    00
  • c# 连接access数据库config配置

    想要通过C#连接Access数据库,需要先进行config配置(在app.config中配置),然后使用System.Data.OleDb命名空间中的类进行连接和操作。 步骤如下: 1.在app.config中添加config配置 在app.config文件的<configuration>标签下添加以下代码: <connectionStri…

    C# 2023年6月2日
    00
  • C#中字符串优化String.Intern、IsInterned详解

    C#中字符串优化String.Intern、IsInterned详解 什么是字符串优化 在 C# 中,字符串是不可变类型,每次对字符串进行操作时都会产生新的字符串对象。这就意味着如果我们频繁地对字符串进行操作,就会造成很多对象的额外开销。所以为了减少这种开销,我们需要对字符串进行优化。 字符串优化的方法有很多,其中一种方法是使用 String.Intern …

    C# 2023年5月31日
    00
  • asp.net 添加水印的代码(已测试)

    根据您提供的主题,我将为您详细讲解如何在ASP.NET中添加水印的代码(已测试)。 简介 添加水印是网站开发中的常见需求之一。本篇攻略将帮助您实现一个简单的ASP.NET添加水印功能,并且已经过测试,代码经过了验证和校验,可以在常规的web应用程序中运行。 前置条件 在使用本文中的代码示例之前,请确保您已经满足以下前置条件: 拥有一个ASP.NET Web …

    C# 2023年5月31日
    00
  • C#实现的Windows剪贴板监视器功能实例【附demo源码下载】

    C#实现的Windows剪贴板监视器功能实例 前言 剪贴板是我们在使用电脑时几乎必然会用到的功能之一,而剪贴板监视器的作用就是拦截剪贴板的相关操作,我们可以通过监视剪贴板来实现一些功能,如:自动翻译剪贴板内容等。在本文中,将通过C#实现Windows剪贴板监视器的功能,并附带Demo源码以及详细讲解。 实现剪贴板监视器 1. 创建项目 首先,我们需要创建一个…

    C# 2023年6月8日
    00
  • .net core使用redis基于StackExchange.Redis

    在本文中,我们将详细讲解如何在.NET Core中使用Redis基于StackExchange.Redis,并提供两个示例说明。 准备工作 在开始之前,您需要安装以下软件: .NET Core SDK Redis 安装StackExchange.Redis 在.NET Core项目中添加StackExchange.Redis NuGet包。 dotnet a…

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