我有以下代码:
string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\db\suc.xls; Extended Properties=""Excel 12.0;HDR=YES;""";
// Create Connection to Excel Workbook
using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{
OleDbCommand command = new OleDbCommand
("Select * FROM [Sheet1$]", connection);
connection.Open();
我收到以下错误:
无法找到可安装的ISAM。
connection.Open()
。有什么想法吗?
答案 0 :(得分:17)
我遇到了同样的错误,但上述建议都没有奏效。在我的情况下,我所要做的就是将我的连接字符串更改为:
string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties='Excel 12.0;IMEX=1;'";
请注意扩展属性属性周围的单引号(' Excel 12.0; IMEX = 1;')。一旦我添加了这些单引号,错误就消失了!
答案 1 :(得分:5)
没有64位版本的Jet OLEDB驱动程序,所以如果你在64位操作系统上运行它,你可能需要在.NET应用程序中定位x86
而不是Any CPU
:
答案 2 :(得分:2)
我在尝试使用更新的提供程序打开xls文件时遇到此问题。 我通过从
更改扩展属性来解决此问题Extended Properties="Excel 11.0;"
到
Extended Properties="Excel 8.0;"
我猜Excel 11需要一个xlsx样式文件。
答案 3 :(得分:0)
使用Extended properties="\excel 8.0;
答案 4 :(得分:0)
在64位Windows和64位Office(2010,2013)环境中,有许多关于此错误的报告。修复或解决方法有点奇怪,但似乎适用于那里的大多数人。
“Microsoft Access Database Engine 2010 Redistributable”安装包似乎很自然,但有几份报告称它不起作用。
相反,使用“2007 Office System Driver: Data Connectivity Components”似乎可以解决大多数人的上述问题。
答案 5 :(得分:0)
我有同样的问题。我正在使用Excel 2010数据库。但是我有一个xlsx文件而不是xls。我使用连接字符串作为休止符解决了我的问题,
Provider = Microsoft.ACE.OLEDB.12.0; Data Source = logbook.xlsx;扩展属性='Excel 12.0; HDR = YES; IMEX = 1;';
我所缺少的是 我使用OLEDB.4.0而不是ACE.12.0。我尝试使用ACE.14.0。但这也不起作用。 然后我错过了扩展属性周围的反引号('')。
很抱歉,如果答案难以理解,我正在手机中上传。
答案 6 :(得分:0)
//设置与EXCEL文件的连接。
OleDbConnection myExcelConn = new OleDbConnection
("Provider=Microsoft.ACE.OLEDB.12.0; " +
"Data Source=" + Server.MapPath(".") + "\\" + fileUpload1.FileName +
";Extended Properties='Excel 12.0;HDR=YES'");
在扩展属性中放入单引号,例如 扩展属性='Excel 12.0:HDR = YES'解决了我的问题。