这两天项目需求要检索excel的内容,于是就研究了一下,话不多说,我就直接贴代码1.首先是连接excel。

public DataTable SearchSheetToDT(string strSearch, string sheetName)
{
//文件路径
string path = Server.MapPath("~/Content/custom/Excel1.xlsx");
//连接表字符串
string ExcelConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + @path + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=2;ImportMixedTypes=Text'";
using (OleDbConnection ole_conn = new OleDbConnection(ExcelConnection))
{
ole_conn.Open();
using (OleDbCommand ole_cmd = ole_conn.CreateCommand())
{
ole_cmd.CommandText = strSearch;
OleDbDataAdapter adapter = new OleDbDataAdapter(ole_cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, sheetName);//sheetName就是excel里的sheet表名
DataTable dt = new DataTable();
dt = ds.Tables[];
return dt;
}
}
}

简单解释一下连接字符串
HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
IMEX 参数因为不同的模式代表著不同的读写行为:
  当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
  当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
  当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
Provider=Microsoft.ACE.OLEDB.12.0;这说明是excel2007以上的版本,xls文件一般都是03版本,Provider=Microsoft.Jet.OLEDB.4.0; 
详情连接字符根据版本怎么写可以参照网站:http://www.connectionstrings.com/excel/
在写的时候可能出现“找不到可安装的ISAM ”这个时候出现这种情况多可能是你的连接语句缺斤少两了,你仔细检查Extended Properties='Excel 12.0;HDR=Yes;IMEX=2'"这个是不是少了分号什么的,我当时出错是因为Data Source这个,少了一个空格,写成了DataSource,找了好久。如果你确定真真没错,那就看看电脑有没有excel,重新安装ISAM呗。具体得操作步骤:在“运行”对话框中输入以下内容:Regsvr32 c:\WINDOWS\system32\msexcl40.dll  然后回车
之后就没问题,连接上了。就看操作语句

public bool SearchIndexSheet(string k)
{
string strIndex = "select * from [sheet1$]";//这里sheet1就是你的表名是什么就写什么,例如学生表就是 学生表$
string sheetName = "[sheet1$]";
DataTable indexdt = new DataTable();
//读取excel
indexdt = SearchSheetToDT(strIndex, sheetName);
//indexdt.DefaultView.RowFilter = "列名1='上证A股指数'";
//查询条件
var reslut = indexdt.Select("列名1='" + k + "' or 列名2='" + k + "'").ToList();
if (reslut.Count != 0)
{
return true;
}
else return false;
}

  可能有些人会直接写string strIndex = "select * from [sheet1$] where [列名1]='"+k"'";这个也是可以的,只是有时候会报错
例如这种错误 标准表达式中数据类型不匹配  ,不是因为你语句写错了,而是因为excel中有表达式,所以我就把数据取出来放在datatable里了。
基本上对于excel的读取就这样了。
这算是导入吧,导出还没写过。

     /// <summary>
/// 查询文档-字段返回查询
/// </summary>
/// <param name="k"></param>
/// <returns></returns>
public List<DataRow> SearchMatchSheet(string k)
{
string strMatch = "select * from [<span style="line-height: .2000007629395px;">表名1</span>$]";
string sheetName = "[表名1$]";
DataTable matchdt = new DataTable();
matchdt = SearchSheetToDT(strMatch, sheetName);
var reslut = matchdt.Select("列名1='" + k + "'").ToList();
return reslut;
}

关于oledb对Excel的读取的更多相关文章

  1. oledb 操作 excel

    oledb excel http://wenku.baidu.com/search?word=oledb%20excel&ie=utf-8&lm=0&od=0 [Asp.net ...

  2. C#操作Excel文件(读取Excel,写入Excel)

    看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,如今共享大家,希望给大家可以给大家带了一定的帮助.另外我们还要注意一些简单的问题1 ...

  3. C#中用OLEDB操作EXCEL时,单元格内容长度超过255被截断

    C#中Microsoft.ACE.OLEDB.12.0 驱动读取excel,会读取前8行来判定每列的数据类型,假如没有超过255个字符,那么会被设置为nvarchar(255),从第9行开始,超过25 ...

  4. C#使用oledb操作excel文件的方法

    本文实例讲述了C#使用oledb操作excel文件的方法.分享给大家供大家参考.具体分析如下: 不管什么编程语言都会提供操作Excel文件的方式,C#操作Excel主要有以下几种方式: 1.Excel ...

  5. OLEDB操作Excel

    使用OLEDB操作Excel 的方法 OleDbConnection conn = null;            try            {              //fileName ...

  6. C#彻底解决Oledb连接Excel数据类型不统一的问题

    在使用Microsoft.Jet.OLEDB.4.0连接Excel,进行读取数据,相对使用传统的COM来读取数据,效率是很高的.但相对传统COM操作Excel来说,及存在数据类型转换的问题.因为使用O ...

  7. .Net之路(十四)com组件、OLEDB导入EXCEL

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/chenfanglincfl/article/details/30546777 .NET com组件 ...

  8. 关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得

    近期在用C#写一个创建Excel并将数据导出到Excel的WinForm程序, 让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻 ...

  9. 在实现从excel中读取数据作为接口参数遇到的问题

    这个算我自己第一次使用python语言实现 一个功能 一.首先我们先要代码实现如何从excel上读取数据python实现还是比较简单的 1.我使用的是xlrd模块,我们先要安装这个包,这样我们才可以使 ...

随机推荐

  1. 解密-神秘的 RunLoop

    引言 一直以来RunLoop就是个神秘的领域,好多2.3年的开发者都不能准确的表述它的作用,说它神秘,其实RunLoop并没有大家想象中的那么神秘,那么不好理解,本文就带大家好好剖析一下”神秘的Run ...

  2. 解除网页右键限制和开启网页编辑状态的js代码

    当访问页面右键被限制了怎么办?很好办!将以下代码添加进收藏夹,点击执行即可: javascript:alert(document.onselectstart = document.onbeforeco ...

  3. picasso_强大的Android图片下载缓存库

    tag: android pic skill date: 2016/07/09 title: picasso-强大的Android图片下载缓存库 [本文转载自:泡在网上的日子 参考:http://bl ...

  4. RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

    RHEL7下PXE+NFS+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] name= ...

  5. Android 连接 SQL Server (jtds方式)——下

    本文主要补充介绍jtds的查询方法,将以博主的一个实际开发程序进行说明 下图是项目的文件列表与界面效果:          运行效果: 1.三个EditText对应的是单个计划的序号.品种名.数量 2 ...

  6. ie浏览器下input和select的上下居中问题!!!!

    在Google浏览器下的input和select标签里面的文字是根据它的高度自适应上下居中的,而ie浏览器下的input和select里面的文字就不会根据高度自适应上下居中,跟大家分享一下我的解决方法 ...

  7. java工程中使用freemarker例子

    新建java project,引入freemarker.jar, 本工程是用的版本:freemarker-2.3.20 版本 java工程目录如下: test.ftl文件 HTML代码 name : ...

  8. 解决第三方DLL没有强签名

    -----转载:http://blog.csdn.net/zyming0815/article/details/5939090 创建一个新的随机密钥对:sn -k myTest.snk 第一步: 将D ...

  9. (转)ECSHOP给分类添加代表图

    转之--http://www.cnblogs.com/wangblognet/archive/2012/12/09/2809916.html ecshop的模板有很多不完善的地方,比如添加商品分类的时 ...

  10. java中的IO一

    一.IO操作的目标 IO的流向 二.IO的分类方法 1.第一种分法:输入流.输出流 2.第二种分法:字节流.字符流 3.第三种分法:节点流.处理流 三.IO当中的核心类 核心类中的核心方法 Input ...