C# 使用 OleDbConnection 连接读取Excel的方法

C# 使用 OleDbConnection 连接读取Excel的方法

要使用 C# 语言连接读取 Excel 文件,可以使用 OleDbConnection 类进行操作。下面将介绍 C# 使用 OleDbConnection 连接读取 Excel 的方法及示例。

步骤一:引用命名空间

使用 OleDbConnection 类需要引用以下命名空间:

using System.Data;
using System.Data.OleDb;

步骤二:创建连接

需要使用 OleDbConnection 类创建连接,其中连接字符串分为两类:

  1. 旧版 Excel 连接字符串,数据源为 .xls 文件格式,如下所示:

csharp
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\folder\file.xls;Extended Properties='Excel 8.0;HDR=YES;'";

  1. 新版 Excel 连接字符串,数据源为 .xlsx 文件格式,如下所示:

csharp
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\folder\file.xlsx;Extended Properties='Excel 12.0;HDR=YES;'";

需要注意的是,在创建连接字符串时,需要使用数据源的路径及文件名,可以在 Extended Properties 中指定 Excel 版本及 Sheet 名称。

步骤三:读取数据

使用 OleDbConnection 的 ExecuteReader 方法可以执行 SQL 语句,并返回用来读取数据的 OleDbDataReader 对象。示例如下:

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    connection.Open();
    OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
    using (OleDbDataReader dataReader = command.ExecuteReader())
    {
        while (dataReader.Read())
        {
            Console.WriteLine(dataReader[0].ToString());
        }
    }
}

上述示例中,我们使用 SELECT * FROM [Sheet1$] SQL 语句来读取 Sheet1 表的全部数据,并使用 OleDbDataReader 对象遍历数据。

示例一:读取 Excel 文件并输出内容

using System;
using System.Data;
using System.Data.OleDb;

namespace ReadExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\data.xlsx;Extended Properties='Excel 12.0;HDR=YES;'";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$]", connection);
                    using (OleDbDataReader dataReader = command.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            for (int c = 0; c < dataReader.FieldCount; c++)
                            {
                                Console.Write(dataReader[c].ToString() + " ");
                            }
                            Console.WriteLine();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
        }
    }
}

上述示例中,我们以 data.xlsx 文件为数据源,使用 OleDbConnection 对象连接 data.xlsx 文件,并使用 command.ExecuteScalar 方法获取 Sheet1 表的全部数据并输出。

示例二:查询 Excel 文件并显示结果

using System;
using System.Data;
using System.Data.OleDb;

namespace ReadExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\temp\data.xlsx;Extended Properties='Excel 12.0;HDR=YES;'";
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    OleDbCommand command = new OleDbCommand("SELECT * FROM [Sheet1$] WHERE ID < 4", connection);
                    using (OleDbDataReader dataReader = command.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            for (int c = 0; c < dataReader.FieldCount; c++)
                            {
                                Console.Write(dataReader[c].ToString() + " ");
                            }
                            Console.WriteLine();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
        }
    }
}

上述示例中,我们以 data.xlsx 文件为数据源,使用 OleDbConnection 对象连接 data.xlsx 文件,并使用 command.ExecuteScalar 方法获取 Sheet1 表中 ID 小于 4 的数据并输出。

以上就是 C# 使用 OleDbConnection 连接读取 Excel 的方法及示例。希望可以帮助你更好地进行 Excel 数据读取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 使用 OleDbConnection 连接读取Excel的方法 - Python技术站

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

相关文章

  • VS2010中lib与dll文件的生成与使用方法

    VS2010中lib与dll文件的生成与使用方法,包括以下几个步骤: 步骤 1:新建项目 在Visual Studio 2010中,点击菜单“文件” → “新建项目”,在“新建项目”窗口中选择“Win32控制台应用程序”,取一个合适的项目名称,例如“DllTest”,点击“确定”。 在“Win32应用程序向导”的第一个对话框中,选择“DLL”,然后点击“下一…

    C# 2023年6月7日
    00
  • Unity3D实现虚拟按钮控制人物移动效果

    下面是“Unity3D实现虚拟按钮控制人物移动效果”的完整攻略: 需求分析 我们需要实现一个虚拟按钮,用于控制人物的移动效果,包括角色的左右移动和跳跃功能。 环境配置 首先需要创建一个Unity项目,并导入角色和场景资源。接着创建一个空的GameObject,命名为“UI”。在UI下创建一个Canvas,并调整Canvas的层级为第三层。 在Canvas下创…

    C# 2023年6月3日
    00
  • C#面向对象的23种设计模式介绍

    《C#面向对象的23种设计模式介绍》是一篇系统性的介绍C#中常见23种设计模式的文章。下面我将为大家详细讲解这篇文章的完整攻略: 一、前言 文章先介绍了设计模式的概念和作用,以及在软件开发中为什么需要设计模式。同时也会提醒读者,设计模式仅仅是一种思想上的借鉴,不能盲目使用。 二、设计模式的分类 文章接着介绍了设计模式的分类方式,分为三类:创建型模式、结构型模…

    C# 2023年5月31日
    00
  • c#使用csredis操作redis的示例

    C# 使用 CSRedis 操作 Redis 的示例攻略 Redis 是一种高性能的键值存储数据库,而 CSRedis 是一个 C# 的 Redis 客户端库,可以方便地在 C# 应用程序中使用 Redis。本攻略将介绍如何使用 CSRedis 操作 Redis,并提供两个示例说明。 步骤 步骤1:安装 CSRedis 首先,我们需要安装 CSRedis。可…

    C# 2023年5月17日
    00
  • C#自定义基于控制台的Timer实例

    下面就为大家详细讲解如何自定义基于控制台的Timer实例。 准备工作 在使用C#自定义基于控制台的Timer实例之前,我们需要先在命名空间中引用System.Threading命名空间。 using System.Threading; 接着我们需要定义Timer对象和定时器事件处理程序,代码如下: //定义Timer对象 Timer timer = null…

    C# 2023年6月1日
    00
  • .net从服务器下载文件中文名乱码解决方案

    针对“.net从服务器下载文件中文名乱码解决方案”,以下是完整攻略的步骤: 问题背景 当从服务器下载文件时,如果文件名中包含中文字符,很容易出现乱码错误。这是由于字符编码问题造成的。 解决方案 .NET提供了System.Net.WebClient类来下载文件。要解决中文文件名乱码问题,我们需要进行以下设置: 设置下载参数 下载文件前需要设置WebClien…

    C# 2023年5月15日
    00
  • C#正则表达式Regex类的用法

    C#正则表达式(Regex)是一个用来匹配字符串模式的工具,它可以比较方便地用于处理文本、验证输入数据、提取数据等。在C#中,有一个表示正则表达式的Regex类,它提供了许多方法可以用来处理文本。下面我们一起来详细讲解C#正则表达式Regex类的用法。 正则表达式的基本语法 在使用C#正则表达式Regex类之前,我们需要先学习一些正则表达式的基本语法。下面是…

    C# 2023年6月7日
    00
  • C#中Dictionary排序方式的实现

    下面我将为您详细讲解如何在C#中使用Dictionary进行排序。 1. Dictionary排序的基本原理 C#中的Dictionary是一种键值对集合,其中TKey为键类型,TValue为值类型。在默认情况下,Dictionary按照键的默认顺序进行排序,并且不支持按照值排序。但是,我们可以通过以下两种方式来实现Dictionary的排序: 自定义比较器…

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