日期:2014-05-17  浏览次数:20817 次

C#读取EXCEL,连接字符串的OLEDB和Extended Properties版本
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;
用这种方法读取EXCEL时,发现数据取不出来。必须在电脑上打开EXCEL,然后才可以读取。后来发现可能是EXCEL文件版本问题。
下载安装了OFFICE 2007后,字段串改为
public static string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR=YES;

一开始还在Provider那绕了一大圈,因为Jet没改为ACE。
但最后发现即使改过了,还是和之前的原因一样。。。
求解

------解决方案--------------------
你可以做几个不同版本的链接,然后根据Excel文件判断
------解决方案--------------------
这个是和你电脑上装的office版本有关,和文件没关系的吧。
------解决方案--------------------
我感觉你加载的Excel路径有问题或是版本出错,根本加载不成功.
这就是为什么你在打开Excel后才能够读取.
你在版本上加入兼容两个版本,加入绝对路径再读取试试.
------解决方案--------------------
你这样还有一种可能是原来打开了没关闭了,文件被锁定,你看下进程里有没excel进程。