2017-02-14 66 views
0

我想通过此连接字符串从Excel(xls)文件读取数据,但某些数据在特定列下丢失。OleDb Excel缺少混合数据类型的数据

连接字符串在下面;

 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”,因为在第二行中的日期值的..

enter image description here

我什么都试过OleDB & mixed Excel datatypes : missing data下,但没有奏效。 。

Thx!

回答

0

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

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

这里是你可以做什么:

  1. 删除G中列(可能是你的要求不允许)的日期值。
  2. 强制Excel将您的07.11.2016日期值作为文本对待,而不应用任何自动格式。要在单元格中使用单引号字符'预设日期值,或手动将日期的单元格数据类型设置为“通过单元格属性设置文本”。然后再尝试阅读。

HTH

+0

第二个建议解决我的问题,但是,我不能要求用户单引号添加到该小区。我需要的技术解决方案(代码或配置)。 – bakin

+0

@bakin你有控制空白的.xlsx模板,然后填充数据?如果是,则可以通过右键单击然后格式化单元格...并在数字选项卡中选择文本,将G列中的所有第一个单元格预先格式化为文本。然后,当用户在那里输入日期时,这些日期应该保存为文本。尝试使用这种方案阅读你的xls。 – andrews