外部数据库驱动程序出现意外错误(22)

时间:2013-02-07 07:59:07

标签: c#

这是我的代码,它位于将.xls文件转换为.csv的方法的开头。

sourceFile="C:\\Users\\myUser\\Desktop\\Folder\\myFile.xls";

string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"";

OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

它在最后一行崩溃,抛出此异常:外部数据库驱动程序出现意外错误(22)。

我尝试删除IMEX = 1部分,但它仍无效。

有什么问题?

6 个答案:

答案 0 :(得分:5)

我也有同样的问题,但我不得不将电子表格重命名为更短的名称,然后才有效。(SQL 2012 Dev)

答案 1 :(得分:2)

奇怪的是,我替换了另一个文件夹中的文件并且它有效。我不知道为什么会这样。

答案 2 :(得分:1)

尝试使用Microsoft.Jet.OLEDB.4.0提供商。另外,我建议您使用OleDbConnectionStringBuilder构建OleDbConnectionString

var oleConnectionStringBuilder = new OleDbConnectionStringBuilder { Provider = "Microsoft.Jet.OLEDB.4.0" };
oleConnectionStringBuilder.DataSource = sourceFile;
oleConnectionStringBuilder.Add("Extended Properties", "Excel 8.0");
oleConnectionStringBuilder.Add("HDR", "No");

答案 3 :(得分:0)

似乎Microsoft Excel驱动程序出现了问题。尝试在另一台PC上执行该程序,看看是否发生了这种错误。

请查看此知识库文章:

http://www.codeproject.com/KB/database/ReadExcel07.aspx。您可以使用OleDb连接Excel文件。

我希望这可以帮助您,并在您尝试后随时跟进。

答案 4 :(得分:0)

我通过卸载Microsoft Access数据库引擎安全更新修复了这个问题。还卸载了访问数据库引擎2007的Service Pack3更新。希望这可行...

答案 5 :(得分:0)

在我的情况下,我重命名了excel文件的工作表名称(它太长了),之后就可以了。 enter image description here

我正在使用:

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 12.0 Xml; IMEX=1;Importmixedtypes=text;\"";