我已经构建了一个小样本来测试XLS导入并遇到问题。
示例数据
如果您信任我,请下载here 一个非常简单的表,它看起来像这样:
=YEARFRAC(B2;TODAY())
=10*roundup(C2/10;0)
对于repro来说应该足够了
所以,在您选择的任何.net语言中(我使用APL但会为您提供详细信息):
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中打开工作表或摆弄任何设置?