首页 新闻 赞助 找找看

c#读取Excel错误。

0
悬赏园豆:5 [已解决问题] 解决于 2016-01-11 13:03

读取Excel的代码如下:

public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName, string where=null,string orderby=null)
{
string strCon = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + filepath + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
OleDbConnection ExcelConn = new OleDbConnection(strCon);
try
{
string strCom = string.Format("SELECT * FROM [{0}$]", tableName);
if (!string.IsNullOrEmpty(where))
{
strCom += string.Format(" where {0} ", where);
}

if (!string.IsNullOrEmpty(orderby))
{
strCom += string.Format(" order by {0} ", orderby);
}
ExcelConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + tableName + "$]");
ExcelConn.Close();
myCommand.Dispose();
return ds;
}
catch(OleDbException ex)
{
ExcelConn.Close();
throw ex;
return null;
}
}

 

 

发现一个问题。

同一台电脑上,用winfrom写的程序,调用这段代码一切正常。

但是用控制台程序来调用这段代码,就报错。

在  ExcelConn.Open(); 这一句 说

未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序

实际上需要安装的东西我都已经安装了,在winfrom下可以使用的。

有大神知道这是什么问题吗?

网子的主页 网子 | 初学一级 | 园豆:167
提问于:2016-01-11 10:24
< >
分享
最佳答案
0

http://www.cnblogs.com/GISerYang/archive/2013/03/20/IIS.html

收获园豆:5
wangYiYi | 初学一级 |园豆:13 | 2016-01-11 11:36

我写的是控制台程序。。要怎么操作?

网子 | 园豆:167 (初学一级) | 2016-01-11 12:56

@网子: 问题搞定了,

确实是因为

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db)

"driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db)

这两种模式无法在64位下运行。IIS下可以设置运行32位

而winfrom和控制台这些可以在属性里设置目标平台位 X86 既可。

具体的设置: 右键你的项目-》属性-》生成-》目标平台-》X86  即可。

网子 | 园豆:167 (初学一级) | 2016-01-11 13:03
其他回答(3)
0

可能你的电脑上的Excel版本过高。你把Excel存成97版本的试试!或者引用一个相符的oleDB Dll。

大楚打码人 | 园豆:4313 (老鸟四级) | 2016-01-11 11:07

但是在winfrom下可以用哦?

支持(0) 反对(0) 网子 | 园豆:167 (初学一级) | 2016-01-11 11:29
0

百度搜索下 未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程

唯我独萌 | 园豆:537 (小虾三级) | 2016-01-11 11:17

搜索这个问题,都是让你安装一个东东,我已经安装了,因为在winfrom下是可以使用的,所以我觉得不是没有安装的问题。

支持(0) 反对(0) 网子 | 园豆:167 (初学一级) | 2016-01-11 11:29
0

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'

ConnectionString改成这个试试。

I,Robot | 园豆:9783 (大侠五级) | 2016-01-11 11:19

报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

支持(0) 反对(1) 网子 | 园豆:167 (初学一级) | 2016-01-11 11:28

@网子: 是不是 路径错了哦

支持(0) 反对(0) 唯我独萌 | 园豆:537 (小虾三级) | 2016-01-11 11:30

@网子: 操作系统是64位还是32位的?

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2016-01-11 11:32

@DIQI: 64位win7    路径肯定没错、

支持(0) 反对(0) 网子 | 园豆:167 (初学一级) | 2016-01-11 12:55

@网子: 项目属性-生成-目标平台,把Any CPU改成x86应该就OK了。

支持(0) 反对(0) I,Robot | 园豆:9783 (大侠五级) | 2016-01-11 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册