我正在尝试将一些数据从excel导入数据库。我从http://www.davidhayden.com/blog/dave/archive/2006/05/31/2976.aspx获得了以下代码。我有一个x86 arhitecture,所以这不是问题。当我运行代码时,程序在connection.Open();
处说“Microsoft .Jet.OLEDB.4.0”提供程序未在本地计算机上注册。有什么想法吗?
string excelConnectionString = @"Provider=Microsoft
.Jet.OLEDB.4.0;Data Source=C://suc.xls;Extended
Properties=""Excel 8.0;HDR=YES;""";
// Create Connection to Excel Workbook
using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{
OleDbCommand command = new OleDbCommand
("Select ID,Data FROM [Data$]", connection);
connection.Open();
// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "Data Source=.;Initial Catalog=Test;Integrated Security=True";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "ExcelData";
bulkCopy.WriteToServer(dr);
}
}
}
答案 0 :(得分:1)
如果您在64位计算机上运行代码及其Web项目,则打开IIS,右键单击“应用程序池”,然后单击“高级设置”。从顶部设置第二个属性:启用32位应用程序为True,这应解决问题。
答案 1 :(得分:0)
我认为生成此错误的计算机上存在正确版本的Excel
和Interop.Excel.dll
文件?由于Jet提供程序位于互操作DLL中,我认为这是最可能的解释。