OleDbDataAdapter方式:

        /// <summary>
/// 读取excel的表格放到DataTable中 ---OleDbDataAdapter
/// </summary>
/// <param name="strSql"></param>
        /// <param name="excelpath">excel路径</param>
/// <returns>datatable</returns>
public static DataTable readexcel(string excelpath,string strSql)
{
OleDbConnection objConn = null;
DataTable dt = new DataTable();
try
{
string excelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + excelpath + ";Excel 8.0;HDR=NO;IMEX=1";//HDR=YES第一行是标题,NO第一行不是标题;IMEX=1表示导入模式,这个模式开启的 Excel 档案只能用来做“写入”用途,还有个重要作用:强制将混合数据转换为文本,可读出excel的数字型的内容。
objConn = new OleDbConnection(excelConn);
objConn.Open();
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter adr = new OleDbDataAdapter();
adr.SelectCommand = objCmd;
adr.Fill(dt);
objConn.Close();
return dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}

OleDbDataReader 方式:

        /// <summary>
/// 读取excel的表格放到DataTable中 ---OleDbDataReader
/// </summary>
/// <param name="strSql"></param>
        /// <param name="excelpath">excel路径</param>
/// <returns>datatable</returns>
public static DataTable readexcel(string excelpath,string strSql)
{
string excelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + excelpath + ";Excel 8.0;HDR=NO;IMEX=1";//HDR=YES第一行是标题,NO第一行不是标题;IMEX=1表示导入模式,这个模式开启的 Excel 档案只能用来做“写入”用途,还有个重要作用:强制将混合数据转换为文本,可读出excel的数字型的内容。
DataTable dt = new DataTable();
try
{
using (OleDbConnection connection = new OleDbConnection(excelConn))
{
OleDbCommand command = new OleDbCommand(strSql, connection);
connection.Open();
OleDbDataReader reader;
reader = command.ExecuteReader();
dt.Load(reader); //直接把reader转换为datatable
reader.Close();
}
return dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}

从上述两个例子不难看出,其实excel也相当于一个数据库,读取excel的sql语句如:string strSql = "Select  *  From  [sheet1$A10:L24]";//读取sheet1工作表A10到L24区域的内容

类似的,读取oracle等数据库,只需把数据库引擎等改为相应的类型就可以了。

【c#操作office】--OleDbDataAdapter 与OleDbDataReader方式读取excel,并转换为datatable的更多相关文章

  1. 数据处理之以OLEDB方式读取Excel数据丢失的原因及解决方法

    1.引言 在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,C#读取Excel的方式有两种,一种是通过OLEDB方式读取,另一种为通过COM组件方式读取.近段时 ...

  2. 读取Excel数据到DataTable

    读取Excel数据到DataTable 代码 /// <summary> /// 获取指定路径.指定工作簿名称的Excel数据:取第一个sheet的数据 /// </summary& ...

  3. 怎么使用Aspose.Cells读取excel 转化为Datatable

    说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...

  4. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  5. oledb方式读取excel文件

    进入博客园后台发现12年11月份写的草稿没发,时隔1年,把它拉出来晒晒太阳. 前言 第一次做Excel文件导入,采用了oledb,不足之处,还请各位大牛指出,谨以此文对导入Excel做个总结. 一般步 ...

  6. 使用OLEDB方式 读取excel和csv文件

    /// <summary> /// 使用OLEDB读取excel和csv文件 /// </summary> /// <param name="path" ...

  7. 使用NPOI读取Excel数据到DataTable

    如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...

  8. 读取excel 文件到datatable

    上一篇文章介绍了将datatable 内容导出到excel 文件,这里介绍如何将一个excel 文件读取出来,并保持到datatable 中,实际这样的应用场景也是经常遇到的. 这里继续使用了Micr ...

  9. Java POI 读取Excel数据转换为XML格式

    1.首先要下载poi相关的包:http://poi.apache.org/  ,以下是所需的jar包 2.贴上详细的代码 public class ExcelToXml { /** * 将excel的 ...

随机推荐

  1. JavaScript之一: 闭包、执行环境、作用域链

    这是大虾的第一篇博文,大虾试图用最直白的语言去描述出所理解的东西,大虾是菜鸟,水平有限,有误的地方希望路过的朋友们务必指正,谢谢大家了. 从读书时代一路走来,大虾在学习的时候逐渐喜欢上了去追寻根源,这 ...

  2. java 生产者消费者问题 并发问题的解决(转)

    引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...

  3. Java的结构之美【1】——构造对象

    当我们遇到多个构造器參数的时候可能会想到用构件器,代码例如以下: /** * 构建器 * @author 阳光小强 * */ public class Lunch { private String c ...

  4. 使用Xcode和Instruments调试解决iOS内存泄漏

    尽管iOS 5.0加入版本号之后ARC机制,由于相互引用关系是复杂的.内存泄漏可能仍然存在.于是,懂原理是非常重要的. 这里讲述在没有ARC的情况下,怎样使用Instruments来查找程序中的内存泄 ...

  5. 最新Oracle 和 mysql 的对比参照----开发篇(转)

    Oracle mysql 对比版本 Release 10.2.0.1.0 XE  windowsXP 5.0.45-community-nt-log MySQL Community Edition ( ...

  6. DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

    原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助 ...

  7. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal&#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  8. jquery datatables api (转)

    学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...

  9. hdu5044 Tree 树链拆分,点细分,刚,非递归版本

    hdu5044 Tree 树链拆分.点细分.刚,非递归版本 //#pragma warning (disable: 4786) //#pragma comment (linker, "/ST ...

  10. NYoj 部分和问题(深搜经典)

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1058 #include <stdio.h> ], vis[], co ...