c#错误:“无法找到可安装的ISAM”将Excel文件转换为.CSV文件

时间:2013-07-25 13:00:01

标签: c# excel exception 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

在调试模式下,应用程序抛出异常(行:conn.Open();) 我搜索了互联网,发现我必须将Data Source放在一个cotes之间,但在我的情况下它不起作用。

2 个答案:

答案 0 :(得分:15)

两个连接字符串都是错误的。

对于.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的不同连接字符串文件 - 请参阅here

对于.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的更改以及最后添加分号)

答案 1 :(得分:1)

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