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日

相关文章

  • C#调用python.exe使用arcpy方式

    下面是详细讲解“C#调用python.exe使用arcpy方式”的完整攻略。 一、前置准备 在 C# 中调用 Python 脚本需要借助于 Process 类,同时需要安装好 python 的开发环境以及第三方库 arcpy。 安装 arcpy: 安装 ArcGIS Desktop 或者 ArcGIS Engine。 执行 ArcGIS Desktop 安装…

    C# 2023年5月15日
    00
  • WCF分布式开发之MSMQ消息队列

    WCF分布式开发之MSMQ消息队列 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。它提供了一种统一的编程模型,使得开发人员可以使用不同的传输协议和编码方式来实现分布式应用程序。其中,MSMQ(Microsoft Message Queuing)消息队列是WCF中常用的一种传输协议,它可以实现异步…

    C# 2023年5月15日
    00
  • C#之Socket客户端全过程

    C#之Socket客户端全过程 1. 了解Socket 在进行Socket编程前,需要先了解什么是Socket。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,使得应用层可以通过这组接口实现对TCP/IP协议族的访问。可以将Socket理解为一种网络上的“插头”,它负责连接客户端和服务器端。 在C#中,Socket类是封装了Win…

    C# 2023年6月1日
    00
  • 如何在Asp.Net Core中集成Refit

    Asp.Net Core中集成Refit攻略 Refit是一个开源的RESTful API客户端库,它可以帮助我们轻松地使用C#来访问Web API。在Asp.Net Core中,我们可以使用Refit来简化Web API的调用。本攻略将介绍如何在Asp.Net Core中集成Refit。 步骤 以下是在Asp.Net Core中集成Refit的步骤: 安装…

    C# 2023年5月17日
    00
  • .NetCore手动封装日志组件的实现代码

    手动封装日志组件是一种常见的.NET Core开发技巧,可以帮助我们更好地管理和记录应用程序的日志信息。下面是手动封装日志组件的实现代码攻略: 创建日志组件类:首先,我们需要创建一个日志组件类。我们可以在.NET Core应用程序中创建一个名为Logger的类,并添加以下代码: using System; public class Logger { publ…

    C# 2023年5月16日
    00
  • 关于.NET6 Minimal API的使用方式详解

    关于.NET6 Minimal API的使用方式详解 .NET6 Minimal API是.NET6中的一个新特性,它提供了一种更简单、更轻量级的方式来创建Web API。本攻略将详细介绍.NET6 Minimal API的使用方式。 创建.NET6 Minimal API项目 我们可以使用以下命令来创建一个.NET6 Minimal API项目: dotn…

    C# 2023年5月17日
    00
  • C#基于TCP协议的服务器端和客户端通信编程的基础教程

    C#基于TCP协议的服务器端和客户端通信编程的基础教程 1. TCP协议简介 TCP协议是面向连接的、可靠的传输层网络协议,常用于提供高可靠性的通信服务,其优点包括可靠性高、传输效率稳定等。 2. C#基于TCP协议的服务器端和客户端通信编程 编写C#程序实现TCP通信需要遵循以下基本步骤: 创建服务器端程序和客户端程序的套接字(Socket) 设置服务器端…

    C# 2023年6月7日
    00
  • C#中发送邮件代码

    让我们来详细讲解一下C#中发送邮件代码的完整攻略吧。 1.准备工作 在C#中发送邮件,需要使用到SmtpClient类和MailMessage类,它们位于命名空间System.Net.Mail中,所以需要先在代码中导入该命名空间。 using System.Net.Mail; 2.发送邮件 2.1 简单邮件 下面我们通过一个简单的例子来演示如何使用C#发送一…

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