近期在做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_MACHINESOFTWAREMicrosoftJet4.0EnginesExcelTypeGuessRows的值为0。TypeGuessRows的系统默认值为8,表示系统从文件中的前8行数据中采样取得数据类型。如果前8行中含有数字类型又有文本类型,采样的数据类型为数目多的类型。例如前8行中有5行数字,3行文本,则返回5行数字,3行为空。如果4行数字,4行文本,则返回4行数字类型,4行为空。8行以后的数据类型若和采样类型一样,则返回真实数据,否则返回空
但是找了一圈,发现找不到,大部分都是很久之前的方法,目前我用的是win10,所以新的路径为
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftJet4.0EnginesExcel
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftOffice12.0Access Connectivity EngineEnginesExcel
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftOffice14.0Access Connectivity EngineEnginesExcel
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftOffice16.0Access Connectivity EngineEnginesExcel
根据版本,修改为0即可,实测能成功导入