【问题标题】:OleDb Excel Missing Data on Mixed Data TypesOleDb Excel 缺少混合数据类型的数据
【发布时间】:2017-02-14 10:52:40
【问题描述】:

我正在尝试通过此连接字符串从 Excel (xls) 文件中读取数据,但特定列下缺少某些数据。

连接字符串如下;

        props["Provider"] = "Microsoft.ACE.OLEDB.12.0;";
        props["Extended Properties"] = "\"Excel 12.0;HDR=YES;IMEX=1;ImportMixedTypes=Text\"";
        props["Data Source"] = path;

我的 Excel 数据就是这样,由于第二行中的日期值,缺失数据位于“G”列下..

我尝试了OleDB & mixed Excel datatypes : missing data 下的所有方法,但没有成功..

谢谢!

【问题讨论】:

    标签: c# winforms connection-string oledb oledbconnection


    【解决方案1】:

    ACE.OLEDB 驱动程序使用注册表设置来确定每一列的数据类型。默认情况下,要检查和猜测列类型的行数设置为 8

    您的日期值正好适合第一个单元格块。因此,ACE 很可能会尝试将 G 列中的其余行读取为日期。

    你可以这样做:

    1. 删除 G 列中的日期值(可能您的要求不允许这样做)。
    2. 强制 Excel 将您的 07.11.2016 日期值视为文本,而不应用任何自动格式。要实现此目的,请在同一单元格中使用单引号字符 ' 在您的日期值前添加,或通过单元格属性手动将日期的单元格数据类型设置为文本。然后再次尝试阅读。

    HTH

    【讨论】:

    • 第二个建议解决了我的问题,但是我不能要求用户在这个单元格中添加单引号。我需要技术解决方案(代码或配置)。
    • @bakin 您是否可以控制空白的 .xlsx 模板,然后填充数据?如果是,那么您可以通过右键单击“格式化单元格...”将 G 列中的所有第一个单元格预格式化为文本,然后在“数字”选项卡中选择“文本”。然后,当您的用户将在那里输入日期时,这些日期应保存为文本。尝试使用这种情况阅读您的 xls。
    猜你喜欢
    • 2011-03-15
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多