c#错误:将Excel文件转换为.CSV文件时“找不到可安装的ISAM”
本文关键字:文件 找不到 安装 ISAM CSV 错误 Excel 转换 | 更新日期: 2023-09-27 18:24:58
我正在进行一个项目,该项目能够将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"平台编译