将Excel文件当作数据库访问时同一列数据类型不同时读取不到数据

当以数据库方式访问Excel文件时,可能出现因列数据类型不一致导致部分数据丢失的问题。原因是驱动程序根据前几行数据自动推断列类型。解决方法是在连接字符串中加入IMEX=1属性,强制混合数据转换为文本。此外,结合注册表值TypeGuessRows调整采样行数可进一步优化。
摘要由CSDN通过智能技术生成

使用程序访问Excel文件时,如果文件是标准的Excel文件格式,可以使用com组件进行访问,也可以将Excel文件当做数据库文件访问

com组件访问的好处是显而易见的,可以对Excel里的单元格进行读取,也可以进行修改,同时也带来一个问题就是访问速度慢。

用数据库的方式来访问,好处就是简单快捷,缺点就是只能操作数据,无法操作格式。

但是很多时候我们可能仅仅只是想要做数据读取出来进行统一整理,这个时候采用数据库访问的方式就更加快捷。

数据库访问的具体代码随便都可以搜到,不再细说,将Excel当作数据库文件访问,也只是数据库连接字符串不同而已,标准的连接字符串:
Excel2003:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\1.xls;Extended Properties=“Excel 8.0;HDR=YES;”;
Excel2007:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\1.xlsx;Extended Properties=“Excel 12.0 Xml;HDR=YES”;
很多时候,这样做就可以进行读取了。

但是我在使用的时候确发现很多列的数据读取部分正常,部分丢失。
Excel当做数据库访问的时候,有一个自动推断的功能,会根据Excel里前几行的数据来推断列的数据格式,如果后面的单元格里存在类型不一致的情况,这时就可能会发生读取不到数据的情况。

解决办法: 在连接字符串后面加上一个属性
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值