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

在调试模式下,应用程序抛出异常(行:conn.Open();)我在网上搜索了一下,发现我必须把Data Source放在一个小圈子之间,但它对我来说不起作用。

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

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

对于.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的更改,并在末尾添加分号)

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

最新更新