C#使用oledb读取excel表格内容到datatable的方法

关于“C#使用oledb读取Excel表格内容到DataTable的方法”的攻略,我可以这样来进行详细讲解。

1. 需求

我们的需求是读取Excel表格的内容,并将其存储到DataTable中,以便于进行后续的操作和处理。

2. 准备工作

需要安装Microsoft ACE OLEDB运行库才能正常使用,还需要添加System.Data命名空间。

3. 读取Excel表

3.1 初始化oledb连接字符串

// excel文件路径
string filePath = "D:\\test.xlsx";

// 定义连接字符串
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";

3.2 创建oledb连接对象

// 创建oledb连接对象
OleDbConnection connection = new OleDbConnection(connectionString);

3.3 打开连接

// 打开连接
connection.Open();

3.4 获取数据源的所有表名

// 获取数据源的所有表名
DataTable schemaTable = connection.GetSchema("Tables");

3.5 选择Excel表

// 选择Excel表
string sheetName = "Sheet1$"; // 选择第一个表格
string selectCommand = "SELECT * FROM [" + sheetName + "]"; // 查询语句
OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connection);

3.6 填充数据到DataTable对象中

// 填充数据到DataTable对象中
DataTable table = new DataTable();
adapter.Fill(table);

3.7 关闭连接

// 关闭连接
connection.Close();

好了,至此,我们就成功地将Excel表格的内容读取到了DataTable中。

4. 示例

以下是两个示例:

示例一:将DataTable内容输出到控制台

Console.WriteLine("输出DataTable内容:");
foreach (DataRow row in table.Rows)
{
    foreach (DataColumn col in table.Columns)
    {
        Console.Write(row[col] + "\t");
    }
    Console.WriteLine();
}

示例二:将DataTable内容输出到一个新Excel表格中

// 输出到新表格中
string outputFilePath = "D:\\new.xlsx";
string outputSheetName = "Sheet1";

// 创建新的Excel文件
File.WriteAllBytes(outputFilePath, new byte[0]);
var excel = new ExcelPackage(new FileInfo(outputFilePath));

// 获取“Sheet1”工作表
var sheet = excel.Workbook.Worksheets.Add(outputSheetName);

// 输出标题行
int row = 1, col = 1;
foreach (DataColumn column in table.Columns)
{
    sheet.Cells[row, col++].Value = column.ColumnName;
}

// 输出数据行
foreach (DataRow r in table.Rows)
{
    row += 1; // 移动到下一行
    col = 1; // 列归1
    foreach (DataColumn c in table.Columns)
    {
        sheet.Cells[row, col++].Value = r[c];
    }
}

// 保存修改并关闭Excel文件
excel.Save();
excel.Dispose();

以上就是关于“C#使用oledb读取Excel表格内容到DataTable的方法”的详细介绍和代码示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用oledb读取excel表格内容到datatable的方法 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • WPF 调用 ECAN 发送数据会阻塞的解决过程

    接了个活, 写个 WPF 上位机用 PCAN 或 ECAN 和单片机通讯, 读取传感器数据. 程序逻辑是 : 选择连接类型 PCAN / ECAN, 选择波特率, 选择通道号, 输入查询间隔, 连接设备. 然后开启一个后台线程循环发送读取指令逐个读取传感器数据. 使用 PCAN 时, 连接和收发数据都正常, 但改为 ECAN 连接后, 有很大几率卡在 SDK…

    C# 2023年5月2日
    00
  • 磊科(Netcore)无线路由器的IP地址过滤实现方法

    磊科(Netcore)无线路由器的IP地址过滤实现方法 磊科(Netcore)无线路由器提供了IP地址过滤功能,可以限制特定IP地址的设备访问路由器。下面是实现IP地址过滤的步骤: 登录路由器管理页面 首先,我们需要登录路由器管理页面。在浏览器中输入路由器的IP地址,然后输入用户名和密码登录路由器管理页面。 进入IP地址过滤设置页面 在路由器管理页面中,找到…

    C# 2023年5月16日
    00
  • 深入分析C#连接Oracle数据库的连接字符串详解

    那么让我们开始“深入分析C#连接Oracle数据库的连接字符串详解”的完整攻略。 标题 深入分析C#连接Oracle数据库的连接字符串详解 简介 在使用C#编写与Oracle数据库交互的应用程序时,必须使用正确的连接字符串。本文旨在为读者提供一份易于理解的C#连接Oracle数据库的连接字符串详解,帮助读者加强对Oracle数据库连接字符串的理解。 步骤 步…

    C# 2023年6月1日
    00
  • 一起详细聊聊C#中的Visitor模式

    当我们在开发C#程序时,或多或少遇到过对象结构和操作之间互相依赖的情况,比如需要对某一组对象进行相同的操作。而当我们需要添加一个新的操作时,又不希望去修改原本的对象结构,因为这样做很容易引入新的错误,势必会导致系统不稳定。这个时候,我们可以考虑使用访问者模式(Visitor Pattern)来解决这个问题。 什么是Visitor模式 在C#中,访问者模式是一…

    C# 2023年6月7日
    00
  • C# Distinct和重写IEqualityComparer时要知道的二三事

    C# 中的 Distinct 方法用于从一个序列中筛选出不同的元素,这些元素是根据它们的默认相等性比较器进行比较的。然而,在一些情况下,我们希望通过自定义相等性比较器来进行元素比较。这时就需要重写 IEqualityComparer 接口,使用自定义的相等性比较器来进行元素比较。下面是关于 C# 中 Distinct 方法和自定义比较器的攻略: 1. 相关基…

    C# 2023年6月1日
    00
  • C#设置MDI子窗体只能弹出一个的方法

    要实现C#中的MDI子窗体只能弹出一个的功能,可以通过以下步骤来实现: 首先,需要在程序启动时禁用MDI窗体的自动创建子窗体的功能,以便手动创建并管理子窗体。可以通过设置IsMdiContainer属性为false实现。 this.IsMdiContainer = false; 在需要弹出子窗体的地方,先检查当前是否已经存在同类型的子窗体,如果存在则不再弹出…

    C# 2023年5月15日
    00
  • C# Stream.ReadByte – 从流中读取一个字节

    C# 中的 Stream 类提供了许多方法来读取和写入字节流,其中包括 ReadByte 方法。ReadByte 方法的作用是从当前流中读取下一个字节并提升流的位置一个字节,如果流已经结束,则返回 -1。 使用方法的完整攻略如下: 语法 public virtual int ReadByte(); 返回值 返回读取的字节的整数表示形式,如果已经读取到流的末尾…

    C# 2023年4月19日
    00
  • Entity Framework Core相关包的概念介绍与安装

    下面详细给您介绍一下”Entity Framework Core相关包的概念介绍与安装”的完整攻略。 什么是Entity Framework Core? Entity Framework Core是一个全新的对象关系映射框架,支持.NET Core平台,使用C#语言实现。它能够使开发人员通过操作对象来进行数据库操作,而不是直接使用SQL命令。它具有灵活性和可…

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