【问题标题】:Data is missing while reading excel file using OLEDB使用 OLEDB 读取 excel 文件时数据丢失
【发布时间】:2017-04-11 18:24:53
【问题描述】:

我正在使用 OLEDB 将 excel 文件读入数据表。但问题是,缺少一些值(空)。在我的 Excel 表中,一列数据类型是 General,它具有字符串和整数等混合值。大多数单元格值都是整数。为什么 OLEDB 会跳过字符串值。

OleDbConnection connection = new OleDbConnection();

connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + "; Extended Properties=\"Excel 12.0;IMEX=1\";";
OleDbCommand myAccessCommand = new OleDbCommand();

myAccessCommand.CommandText = "Select * from [" + sheetName + "]";

OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

myDataAdapter.Fill(myDataSet);

【问题讨论】:

  • 我们仍然需要看看您是如何从工作表中实际检索数据的

标签: c#


【解决方案1】:

检查以下链接并查看“解决方案”下的要点: http://support.microsoft.com/kb/194124

请参阅第 2 点注意事项。

设置 IMEX=1 完全取决于您的注册表设置。默认情况下,检查前 8 行以确定数据类型。 IMEX=1 会产生不可预知的行为,例如跳过字符串值。这个问题还有一个小的解决方法。只需在 excel 中的每个单元格值之前添加单引号 (')。每个单元格都将被视为字符串。

【讨论】:

  • 也加一点解释。
  • 在 Excel 中将单元格格式设置为“文本”而不​​是“常规”也可以。
【解决方案2】:

将 IMEX=1 添加到连接字符串中,如下所示:

string con = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + @"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", fileName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2020-04-01
    • 2019-10-18
    相关资源
    最近更新 更多