C#读取EXCEL,连接字符串的OLEDB和Extended Properties版本

yangjie008008 2012-03-15 10:38:54
@"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。
但最后发现即使改过了,还是和之前的原因一样。。。
求解
...全文
5045 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏卡罗 2014-09-10
  • 打赏
  • 举报
回复
尝试修改一下Microsoft 表格版本,有同样问题出现过,修改版本后OK。 下面是测试代码: 供参考 string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Extended Properties=Excel 8.0;" + "data source=" + "mh"; OleDbConnection myConn = new OleDbConnection(strCon); string strCom = " SELECT * FROM [Sheet1$]"; myConn.Open(); OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn); myCommand.Fill(ds_Mh); myConn.Close();
微wx笑 2014-05-10
  • 打赏
  • 举报
回复
我的电脑系统是Win7,Office 2007,使用以下语句可以读取数据表内容,并且可以使用“Insert Into”语句插入数据: string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelPath + ";Extended Properties='Excel 12.0; HDR=yes; IMEX=0'"; excelPath:就是Excel文件的完全路径; 最近刚好在写一个C#导出数据到Excel文件的功能;
riverujan11 2013-12-02
  • 打赏
  • 举报
回复
public static string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=NO;IMEX=1'";
ziyouli 2012-04-16
  • 打赏
  • 举报
回复
你这样还有一种可能是原来打开了没关闭了,文件被锁定,你看下进程里有没excel进程。
Jade 2012-03-16
  • 打赏
  • 举报
回复
" Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + " ;Extended Properties=Excel 8.0";

我用的是2003的,读取没有问题。
yangjie008008 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 net_lover 的回复:]

你的xls文件是什么版本的?

服务器无需安装office,

excel路径设置的正确吗
[/Quote]

EXCEL文件是别的软件直接导出的。他们说是2003的
路径没有问题
yangjie008008 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 aganqin 的回复:]

我感觉你加载的Excel路径有问题或是版本出错,根本加载不成功.
这就是为什么你在打开Excel后才能够读取.
你在版本上加入兼容两个版本,加入绝对路径再读取试试.
[/Quote]

路径是绝对路径,直接选择框选择的。
在版本上加入兼容两个版本?怎么设置?
覃祖甘 2012-03-16
  • 打赏
  • 举报
回复
我感觉你加载的Excel路径有问题或是版本出错,根本加载不成功.
这就是为什么你在打开Excel后才能够读取.
你在版本上加入兼容两个版本,加入绝对路径再读取试试.
孟子E章 2012-03-16
  • 打赏
  • 举报
回复
你的xls文件是什么版本的?

服务器无需安装office,

excel路径设置的正确吗
yangjie008008 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tebiefu 的回复:]

纯C#代码 不需要Office Excel Com组件的支持, 读出在工作簿(workbook)中的所有Worksheet,读出所有WorkSheet中的单元,读取单元的内容(文本,数字,日期或错误)等,到我的资源里下载
[/Quote]

兄弟,资源在哪?地址?
yangjie008008 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cjh200102 的回复:]

你可以做几个不同版本的链接,然后根据Excel文件判断
[/Quote]

关键5.0、8.0、12.0 都试过了,没用。很郁闷呢
梦里独赏花 2012-03-16
  • 打赏
  • 举报
回复
string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileInfo.FullName + ";" + "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"";
试试这个
ziyouli 2012-03-16
  • 打赏
  • 举报
回复
这个是和你电脑上装的office版本有关,和文件没关系的吧。
莫忘初心svip 2012-03-16
  • 打赏
  • 举报
回复
纯C#代码 不需要Office Excel Com组件的支持, 读出在工作簿(workbook)中的所有Worksheet,读出所有WorkSheet中的单元,读取单元的内容(文本,数字,日期或错误)等,到我的资源里下载
莫忘初心svip 2012-03-16
  • 打赏
  • 举报
回复
我有,稍等,我在上传,一会发地址给你下载
cjh200102 2012-03-16
  • 打赏
  • 举报
回复
你可以做几个不同版本的链接,然后根据Excel文件判断
yangjie008008 2012-03-16
  • 打赏
  • 举报
回复
米人知道么?那算了。
现在想了一个解决方案。
就是在读取前,先进行EXCEL版本转换。
有谁有这方面的资料吗?
一样给分!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧