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日

相关文章

  • WCF入门教程之Windows通讯接口

    下面是关于“WCF入门教程之Windows通讯接口”的完整攻略,包含两个示例。 1. 什么是WCF WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的框架。它提供了一种统一的编程模型,可以使用不同的传输协议和编码方式来实现跨平台的通信。WCF支持多种传输协议,包括HTTP、TCP、MSMQ等,可以在不同的…

    C# 2023年5月15日
    00
  • C# BinarySearch(Object):在整个集合中搜索指定的对象,并返回第一个匹配项的索引

    C# BinarySearch(Object) 方法完整攻略 1. 方法简介 C# BinarySearch(Object) 方法用于在已排序的一维数组中搜索指定的对象,并返回数组中指定对象的索引。该方法采用二分查找算法,如果搜索到指定对象则返回该对象的索引,否则返回一个负数。 2. 方法声明 public static int BinarySearch(A…

    C# 2023年4月19日
    00
  • C#自定义异常就这么简单

    C#是一种强类型语言,可以捕获和处理各种异常,从而帮助我们发现程序中出现的错误。在程序开发过程中,如果需要找到特定的错误情况并处理,这时就需要创建自定义异常。本文将介绍如何在C#中创建和使用自定义异常。 1、什么是异常? 异常是指在程序执行期间发生的错误或异常情况,例如除法中除以0、文件不存在、内存不足等。当发生异常时,程序会停止执行当前的操作,并抛出一个异…

    C# 2023年5月9日
    00
  • 关于EF的Code First的使用以及踩坑记录

    以下是关于EF的CodeFirst的使用以及踩坑记录的完整攻略: 1. 什么是EF的CodeFirst Entity Framework (EF) 是一个对象关系映射 (ORM) 框架,它允许我们使用面向对象的方式来操作数据库。Code First是EF的一种开发模式,它允许我们使用C#代码来定义实体类,然后通过EF自动生成数据库表和关系。 2. 如何使用E…

    C# 2023年5月12日
    00
  • WinForm实现跨进程通信的方法

    WinForm实现跨进程通信的方法有很多种,其中比较常用的有使用WCF、使用Socket、使用共享内存等。 以下是使用共享内存实现跨进程通信的方法: 创建共享内存 使用C#中的System.IO.MemoryMappedFiles类,首先需要创建一个共享内存对象,可以使用MemoryMappedFile.CreateNew方法来创建一个新的内存映射文件,使用…

    C# 2023年6月7日
    00
  • 聊聊JS动画库 Velocity.js的使用

    下面是关于“聊聊JS动画库 Velocity.js的使用”的完整攻略: 什么是 Velocity.js Velocity.js是一款快速、高效、可扩展的动画库,由 Github 上的一个开发者编写。可以用它来对DOM元素进行各种复杂的动画操作,以增强用户体验。 安装 Velocity.js 你可以在官网上找到 Velocity.js 的CDN链接, 或者通过…

    C# 2023年6月1日
    00
  • C#访问PostGreSQL数据库的方法

    C#访问PostgreSQL数据库的方法 PostgreSQL是一种高度可扩展的对象关系型数据库管理系统(ORDBMS),具有丰富的特性、高度的稳定性和性能。 在C#中与PostgreSQL进行交互需要使用到Npgsql这个第三方库。以下是详细步骤: 1. 安装Npgsql 使用NuGet包管理器,搜索Npgsql并安装。 2. 连接数据库 使用Npgsql…

    C# 2023年5月15日
    00
  • Path类 操作文件类的实例

    Path类是Python中操作文件路径的工具类,可以用于文件路径相关的转换、拼接、判断、查询等操作。下面将详细讲解Path类的使用攻略,包括基本用法和进阶用法。 一、基本用法 导入Path类 from pathlib import Path 创建Path对象 # 在当前目录创建Path对象 p1 = Path(‘.’) # 在指定目录创建Path对象 p2 …

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