使用程序访问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:\