【问题标题】:Query an Excel file with C#, issue with the numeric cells使用 C# 查询 Excel 文件,出现数字单元格问题
【发布时间】:2012-04-27 07:32:35
【问题描述】:

我正在查询 Excel 文件以检索数据记录并将其显示在监控工具中。问题是,每当我尝试使用以下请求选择具有其 id 的记录时,它在执行查询时会引发错误:

ExecuteCommandTextErrorHandling

告诉我查询中的类型和目标单元格不兼容。

我的请求看起来像

SELECT TOP 20 [Fields...] 
FROM [RECORD$] 
WHERE (([id] = '1'))

id 列可以包含的不仅仅是数字,因此它的单元格类型是标准的默认类型。

我的问题是:如何在不知道记录类型的情况下获取记录?

我是否必须强制执行列类型,如果是,如何执行?我是否必须捕获异常并在没有引号的情况下重试?

这是用于查询 Excel 文件和我的连接字符串的代码

 public static DataTable queryXlsFile(String query, OleDbConnection dbConnection)
 {
        OleDbDataAdapter dbCommand = new OleDbDataAdapter(query, dbConnection);
        DataTable dt = new DataTable();
        dbCommand.Fill(dt);
        return dt;
    }

Provider=Microsoft.ACE.OLEDB.12.0; data source=C:\\test\\321.xls; Extended Properties=\"Excel 8.0;HDR=Yes;\";

提前致谢。

【问题讨论】:

    标签: c# excel oledb xls oledbcommand


    【解决方案1】:

    尝试添加 IMEX=1;

    HDR=是;IMEX=1"

    【讨论】:

    • 完成,但是如果记录表只有数字 id 它仍然会抛出异常,现在我只是尝试引用,如果它抛出异常,我会在没有它的情况下重试。
    【解决方案2】:

    如果你有很多行,类型是最多的类型,否则类型取决于第一行,一个答案的类型是字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      相关资源
      最近更新 更多