0

这是我的代码,它位于将 .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 部分,但它仍然不起作用。

问题是什么?

4

6 回答 6

5

我也遇到了同样的问题,但我不得不将电子表格重命名为更短的名称,然后它才起作用。(SQL 2012 Dev)

于 2013-08-29T18:08:45.573 回答
2

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

于 2013-02-14T07:32:01.763 回答
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");
于 2013-02-07T08:06:42.130 回答
0

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

请看一下这篇知识库文章:

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

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

于 2013-02-07T08:32:15.857 回答
0

我已通过卸载 Microsoft access DB Engine 安全更新来解决此问题。还卸载 Access DB 引擎 2007 的 Service pack3 更新。希望这将工作...

于 2016-03-16T05:00:58.493 回答
0

就我而言,我重命名了 excel 文件的工作表名称(它太长了),之后它就起作用了。 在此处输入图像描述

我正在使用 :

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 12.0 Xml; IMEX=1;Importmixedtypes=text;\"";
于 2017-07-20T09:49:33.163 回答