找不到可安装的ISAM

读取excel数据 到 datagrid 出现:找不到可安装的ISAM       错误:
 
实在没有办法了 就仔细的查看了 一下数据链接字符串:
 string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Dir + "\\"+fileName + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;"; 

有对照了http://www.connectionstrings.com/ 上的实例发现字符串写法错误;漏了分号。

改为:
 string strConn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Dir + "\\"+fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";    就ok了 

 

EXCEL导入时,同一列中有数据和字符类型,出现导漏数据问题

这个是数据库驱动的原因造成的,你可以在数据库连接字符串中加上"IMEX=1",如:strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Path + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";
说明:HDR=表示数据有无标题行(yes/no),IMEX=1通知驱动程序始终将“互混”数据列作为文本读取,在这里需要清楚的是,系统在判断该字段(列)到底是数值还是文本时,是通过该列的前8条记录是否有文本数据,有则该列作为文本读取,否则,即使后面的记录有文本,也还是按数值读取(导致文本为空)。
修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel”下的TypeGuessRows注册表值,可以将其改大些,如1000,这样在1000条记录前只要有文本,就不会出现文本为空的现象,具体情况要视你的数据而定。
posted @ 2013-12-19 02:50  寻找幸福的起点  阅读(6123)  评论(0编辑  收藏  举报