当涉及日期时,使用 LinqToExcel 读取 Excel 电子表格时遇到问题

Having problems reading an Excel spreadsheet using LinqToExcel, when dates are involved

我从我们的人力资源部门获得了一份 Excel 电子表格,需要将其加载到数据库中。一列中有日期。我在这里搜索了 SO 并找到了 2 个答案 ( and the second one),我认为这可能会解决我的问题,但都没有。

首先,我尝试简单打开电子表格:

var excel = new ExcelQueryFactory(@"D:\Projects\LRAT\Example of SPO report 08-25-17 - Copy.xlsx");

我把第一排留了下来。在 class 中,我定义为匹配电子表格,我为日期定义的 属性 最初是这样的:

[ExcelColumn("Date Current Step Filed")]
[DefaultValue("")]
public string DateStepsFiled { get; set; }

这行得通,因为列中有多个日期。但是当只有 1 个日期时,LinqToExcel 会用这样的值来解释它:39758。显然,不是日期。或者至少不是 mm/dd/yyyy 格式。

在阅读我所做的工作时,我的印象是第一行(通常是 header 行)影响了 LinqToExcel 处理电子表格的方式。我不太明白,因为我认为 LinqToExcel 无论如何都会忽略第一行,但我决定将此列的 header 更改为今天的日期,并且我还将 DateStepsFiled 的定义更改为这个:

[ExcelColumn("Date Current Step Filed")]
[DefaultValue("")]
public DateTime[] DateStepsFiled { get; set; }

情况更糟,因为 LinqToExcel 现在将所有 DateStepsFiled 定义为空。那么,我该如何解决这个问题呢?

应该是

public DateTime DateStepsFiled { get; set; }

而不是

public DateTime[] DateStepsFiled { get; set; }