.net:XLS-> ODBC-> DataTable - 为什么它不起作用?

时间:2018-02-16 12:46:09

标签: .net excel datatable odbc

我已经构建了一个小样本来测试XLS导入并遇到问题。

示例数据

如果您信任我,请下载here 一个非常简单的表,它看起来像这样:enter image description here

  • B 是手动输入的日期
  • C 是计算年龄的公式:=YEARFRAC(B2;TODAY())
  • F =10*roundup(C2/10;0)

对于repro来说应该足够了

所以,在您选择的任何.net语言中(我使用APL但会为您提供详细信息):

  • 使用库' System.Data.Odbc,System.Data.dll' ' System.Data,system.data.dll中'
  • dt初始化为新的DataTable-object
  • d指定为新的OdbcDataAdapter( 'SELECT * FROM [Tabelle1$]' 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ={Filename.xlsx};')
  • 最后做d.Fill(dt)
  • 然后查看第一条记录。

这是我做过的事情:

     dt.Rows[0].ItemArray

┌───┬───────────────────┬───────────────────────────────────────────────┬─┬─┬─┬───────────────────┐    
│foo│13.03.1966 00:00:00│Die Eingabezeichenfolge hat das falsche Format.│0│0│0│13.03.1966 00:00:00│    
└───┴───────────────────┴───────────────────────────────────────────────┴─┴─┴─┴───────────────────┘

您看到3d单元格有错误消息而不是年龄计算,第5个单元格是0而不是60甚至更糟:G中的计算没有完成 - 没有任何迹象表明存在问题!现在,有一次,当我完成这些步骤时,我碰巧在Excel中打开了工作表 - 然后我得到了正确的结果:

┌───┬───────────────────┬──────┬─┬─┬──┬───────────────────┐
│foo│13.03.1966 00:00:00│51.925│0│0│60│13.03.2026 00:00:00│
└───┴───────────────────┴──────┴─┴─┴──┴───────────────────┘

所以,有可能让这个工作正常!

一位同事试图在他的机器上打开这张纸,不得不确认一条关于宏的消息 - 他声称它的工作正常。

嗯,有没有办法让这个工作无需人们在Excel中打开工作表或摆弄任何设置?

0 个答案:

没有答案