【问题标题】:c# Error: “Could Not Find Installable ISAM” in converting Excel file into .CSV filec# 将 Excel 文件转换为 .CSV 文件时出现“Could Not Find Installable ISAM”错误
【发布时间】:2013-07-25 13:00:00
【问题描述】:

我正在开发一个能够将 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 放在一个空格之间,但它不适用于我的情况。

【问题讨论】:

    标签: c# excel exception csv isam


    【解决方案1】:

    两个连接字符串都错了。

    对于.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 的变化以及末尾添加的分号)

    【讨论】:

    • 谢谢@barrowc,你是让生活更美好的人之一
    • (注意从 Excel 1.0 到 Excel 8.0 的变化以及最后添加的分号),我不明白这是什么意思......但我注意到在我生成的文件中还有一列如何删除它
    • 我注意到在我生成的文件中有一个额外的列如何删除它
    • 您需要显示实际生成 CSV 文件的代码,以了解出现附加列的原因。这应该是一个新问题
    • 您在上一个回复中已经提到会有一个额外的列(注意从 Excel 1.0 到 Excel 8.0 的更改以及在末尾添加了一个分号)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-07
      • 2016-11-13
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多