详解Excel读取方式
string path=""//这里定义了excel文件的文件位置
string key= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
OledbConnection connection =new OledbConnection(key);
connection.Open();
string sql="select * from [sheet1$]";
OledbDataAdapter adapter=new OledbDataAdapter(sql,connection);
DataSet tempDataSet=new DataSet();
adapter.Fill(tempDataSet);
-
首先,在c#中数据表是这样子的,c#中有DataSet和DataTable两个关键字,然后我们可以理解DataSet是一类数据表的集合,他是在内存中的虚拟表的集合;DataTable是一种在内存中的虚拟表,他可以存储任何表的数据。。。这么说好抽象,其实可以这样子理解,DataTable是一张a4纸,然后a4纸上画着表格存着很多数据,DataSet就是一沓a4纸啦!!!!
-
前情已经讲述完成,oledb,是一种数据库的方式,其实oledb是早期odbc连接方式的加强版,微软设计出这种应用程序接口是为了连接关系型数据库和非关系型数据库还有其他的奇怪的数据库,说白了是为了隔离每种数据库操作的差异,在我用过的连接比如说sql server和access数据库来说,都是先通过一串字符串来定义一个连接,就是我上面写的那个string类型的key,具体如下:
/连接Sql Server
string key="PROVIDER=SQLOLEDB;DATA SOURCE=servername;UID=xyz;PWD=xxx;DATABASE=dbname"
//连接 Microsoft Access
string key= "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=d:\abc\defg.mdb"
//连接 Microsoft Excel 07版本及老版本
string key="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";" + "Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\""
//连接 Microsoft Excel 07版本及新版本
string key="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\""
- 这些key中间一个空格都不能乱加的!!!!!,要不然根本读不出来!!!!!
- 接下来就是正常套路啦,首先通过OledbConnection声明一个基于key的链接connection,然后打开连接,定义一个sql,把操作放进去,然后通过适配器(OledbAdapter)进行操作,然后通过adapter的fill方法,将得到的数据放到内存中的DataSet就行了,完美!!!内存中就好操作了!! 其实这个东西可以理解为电脑电源,不一样的key就好像国标220v和港版110v,我们通过适配器的电源头怼上插座,然后通过sql语言也就是整流线圈把交流电整成直流电,然后再把直流电输出主板等等地方也就是dataset!!!