c#错误:将Excel文件转换为.CSV文件时出现“找不到可安装的ISAM”

我正在处理一个能够将Excel文件转换为.CSV文件的项目 ,我认为在我的C#代码中有一些问题正在生成,并且错误消息找不到可安装的ISAM ,请帮我解决我的问题。

码:

if (dlgOne.FileName.EndsWith(".xlsx")) { StrConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0;\""; } if (dlgTwo.FileName.EndsWith(".xls")) { StrConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 1.0;HDR=Yes;IMEX=1\""; } OleDbConnection conn = null; conn = new OleDbConnection(StrConn); conn.Open(); <------------ throw exception 

在debugging模式下,应用程序抛出一个exception (line: conn.Open(); )我search了互联网,我发现我必须把Data Source放在一个cotes之间,但在我的情况下不起作用。

这两个连接string都是错误的。

对于.xlsx,它应该是:

 StrConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";"; 

(请注意额外的Xml部分,HDR = YES表示您的文件具有标题,IMEX = 1表示将所有数据视为文本,并将重定位的分号处理为.xlsm和.xlsb文件需要不同的连接string – 请参阅这里 )

对于.xls,它应该是:

 StrConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + srcFile + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"; 

(注意从Excel 1.0到Excel 8.0的变化以及最后添加的分号)

平台扮演着重要的angular色:如果你的代码以64位编译,并且你安装了Office 32位(这意味着所有ODBC,ISAM等驱动程序都是32位)。 尝试使用“任何CPU”平台进行编译