NET读取Excel数据为null的解决办法

近期在做net读取execl出现明明字段有值,但是读取为空的问题,查后发现解决方法为

连接字符串:

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
       edit1.Text+';Extended Properties="excel 8.0;IMEX=1;HDR=YES";Persist Security Info=True';

1。excel的连接字串中的扩展属性必须包含IMEX=1;

2.修改注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows的值为0。TypeGuessRows的系统默认值为8,表示系统从文件中的前8行数据中采样取得数据类型。如果前8行中含有数字类型又有文本类型,采样的数据类型为数目多的类型。例如前8行中有5行数字,3行文本,则返回5行数字,3行为空。如果4行数字,4行文本,则返回4行数字类型,4行为空。8行以后的数据类型若和采样类型一样,则返回真实数据,否则返回空

但是找了一圈,发现找不到,大部分都是很久之前的方法,目前我用的是win10,所以新的路径为

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Jet\4.0\Engines\Excel

 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Excel

 

根据版本,修改为0即可,实测能成功导入

posted @ 2021-04-12 10:47  一只奋斗的小小鸟  阅读(279)  评论(0编辑  收藏  举报