【c#操作office】--OleDbDataAdapter 与OleDbDataReader方式读取excel,并转换为datatable
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的更多相关文章
- 数据处理之以OLEDB方式读取Excel数据丢失的原因及解决方法
1.引言 在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,C#读取Excel的方式有两种,一种是通过OLEDB方式读取,另一种为通过COM组件方式读取.近段时 ...
- 读取Excel数据到DataTable
读取Excel数据到DataTable 代码 /// <summary> /// 获取指定路径.指定工作簿名称的Excel数据:取第一个sheet的数据 /// </summary& ...
- 怎么使用Aspose.Cells读取excel 转化为Datatable
说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- oledb方式读取excel文件
进入博客园后台发现12年11月份写的草稿没发,时隔1年,把它拉出来晒晒太阳. 前言 第一次做Excel文件导入,采用了oledb,不足之处,还请各位大牛指出,谨以此文对导入Excel做个总结. 一般步 ...
- 使用OLEDB方式 读取excel和csv文件
/// <summary> /// 使用OLEDB读取excel和csv文件 /// </summary> /// <param name="path" ...
- 使用NPOI读取Excel数据到DataTable
如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...
- 读取excel 文件到datatable
上一篇文章介绍了将datatable 内容导出到excel 文件,这里介绍如何将一个excel 文件读取出来,并保持到datatable 中,实际这样的应用场景也是经常遇到的. 这里继续使用了Micr ...
- Java POI 读取Excel数据转换为XML格式
1.首先要下载poi相关的包:http://poi.apache.org/ ,以下是所需的jar包 2.贴上详细的代码 public class ExcelToXml { /** * 将excel的 ...
随机推荐
- Repository、IUnitOfWork和IDbContext
DDD 领域驱动设计-谈谈Repository.IUnitOfWork和IDbContext的实践 上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDb ...
- iOS中通讯录电话号码空格问题
今天在读取通讯录的时候,读取到的手机号码格式为* (***) ***-****的,乍看下,数字中间有空格."-".(.)的非数字字符. 然后我就打算替换这些非数字字符,结果替换完, ...
- HDU2451:Simple Addition Expression
Problem Description A luxury yacht with 100 passengers on board is sailing on the sea in the twiligh ...
- linux网络编程投票
投票系统 1.说明: 写了一个投票系统.过程是先配置好server,在写一个网上投票功能.要实现网上投票功能. 事实上功能实现还是非常easy的,麻烦一点的在于过程比較繁杂,要做的东西还是挺多的. 2 ...
- hdu 3001 Travelling (TSP问题 )
Travelling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- SharePoint 2013 中将 HTML文件转换为母版页
原文:SharePoint 2013 中将 HTML文件转换为母版页 SharePoint 2013提供了很多新功能,下面我们看看将Html页面,转换为母版页的功能.这个功能更加方便设计人员设计母版页 ...
- DTD验证XML(转)
1.内部DTD 最简单的使用DTD的方法是在XML文件的序言部分加入一个DTD描述,加入的位置是紧接在XML处理指示之后.一个包含DTD的XML文件的结构为: <?xml ve ...
- hdu2369 Broken Keyboard(类似dfs)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=2369">http://acm.hdu.edu.cn/showproblem.php ...
- js中document.write()使用方法
<script> var hrf = window.location.href; if(hrf.indexOf('change')>0){ ...
- 使用C#实现顺序队列
队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表.把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front).当对列中没有数据元素时称为空对列( ...