C#连接excel的方法与注意事项
连接方法:
C#连接Excel的方法与连接Access的方法类似,同样可以使用OldDBConnection,如下:
- String excelPath = "你的Excel文件绝对路径";
- ConnectionString = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + excelPath + ";" +
- "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
解释一下其中的参数:
- Provider就跟Access 的一样了,置顶数据源类型
- Data Srource,直数据源绝对路径
- Extended Properties 里面几个参数为Excel的拓展参数。其中:
- Excel 8.0 针对EXCEL 2000 或更高版本;Excel 5.0 FOR EXCEL 97
- HDR 表示第一行是否为字段名。Yes为首行字段,No为无首行
- IMEX 表示对同一列中有混合数据类型的列,是统一按字符型处理,还是将个别不同类型的值读为DBNULL。1为混合,2为不混合
数据库连接好后就是查询,查询的方法跟Asscess一样只是Excel的表面后面都需要加上一个’$'字符.比如:
- DataTable tempDataTable = new DataTable();
- String strSql = "SELECT * FROM [sheet1$]";
- DataAdapter da = new OleDbDataAdapter(strSql, myConnection);
- da.Fill(tempDataTable);
到这里,就完成了C#连接Excel和查询Excel数据表。
二个注意事项
接着说二个要注意的事情。
- Extended Properties容易写成如下:
- Extended Properties=Excel 8.0; HDR=Yes;IMEX=1;
网上也很多是写成这么的,如果是写成上面形式,那么就会报错:
- System.Data.OleDb.OleDbException: 找不到可安装的 ISAM。
- 如果不加上IMEX=1;,常常会出现如果某列第二行为空,那么改列的所有数据都为空的情况。