这是我的代码,它位于将.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部分,但它仍无效。
有什么问题?
答案 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)