解决方法of未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

在开发的一个报表转换功能涉及到Excel97-2003(.xls)文件的导入。使用oledb来读取excel数据。代码为:

publicstaticDataSet LoadDataFromExcel(stringfilePath,string[] sheetNames)

{stringstrConn;//strConn = "PRovider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + filePath + ";Extended Properties=Excel 8.0";//strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0xml;HDR=No\"";//这是2010的链接字符串,不同版本链接不同strConn =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ filePath +";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

OleDbConnection OleConn=newOleDbConnection(strConn);

OleConn.Open();

DataSet OleDsExcle=newDataSet();foreach(stringnameinsheetNames)

{stringsql ="SELECT * FROM ["+ name +"$]";

OleDbDataAdapter OleDaExcel =newOleDbDataAdapter(sql, OleConn);

OleDaExcel.Fill(OleDsExcle, name);

}

OleConn.Close();returnOleDsExcle;

}

我使用的IDE是vs2013,OS是Win764位,调试程序时报异常:

“System.InvalidOperationException”类型的未经处理的异常在 System.Data.dll 中发生

其他信息: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

解决方法为:

在项目属性的“生成“里,将目标平台由默认的Any CPU改为x86

ps: 对于web网站,excel导入用OLEDB同样会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

这时,需要修改app pool的设置。“应用程序池默认属性”/“常规”/”启用32位应用程序”,设置为 true。

看来,使用OLEDB还是要付出代价的,呵呵。 使用NPOI则不需要任何设置哦~

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航