【发布时间】:2017-11-28 22:51:14
【问题描述】:
我有一个来自人力资源部门的 Excel 电子表格,需要加载到数据库中。一列中有日期。我在 SO 上搜索了这里并找到了 2 个答案(first one 和 second one),我认为这可能会解决我的问题,但都没有。
首先我尝试简单地打开电子表格:
var excel = new ExcelQueryFactory(@"D:\Projects\LRAT\Example of SPO report 08-25-17 - Copy.xlsx");
我独自离开了第一行。在我为匹配电子表格而定义的类中,我为日期定义了最初的属性,如下所示:
[ExcelColumn("Date Current Step Filed")]
[DefaultValue("")]
public string DateStepsFiled { get; set; }
这行得通,因为列中有多个日期。但是当只有 1 个日期时,LinqToExcel 使用如下值解释它:39758。显然,不是在日期。或者至少没有一个 mm/dd/yyyy 格式。
在阅读我所做的事情时,我得到的印象是第一行,通常是标题行,影响了 LinqToExcel 处理电子表格的方式。我不太明白,因为我认为 LinqToExcel 无论如何都忽略了第一行,但我决定将此列的标题更改为今天的日期,并且我还将 DateStepsFiled 的定义更改为:
[ExcelColumn("Date Current Step Filed")]
[DefaultValue("")]
public DateTime[] DateStepsFiled { get; set; }
这更糟糕,因为 LinqToExcel 现在将所有 DateStepsFiled 定义为 null。那么,我该如何解决这个问题呢?
【问题讨论】:
-
没关系,我已经发现了问题所在。电子表格很大,所以我没有花时间查看电子表格的所有行。我只是花了一些时间,发现用户,无论出于何种原因,在仅用于日期的列中输入了许多日期,例如
39758和39793。我必须回过头来问他们这些值到底是怎么解释的。
标签: c# excel date linq-to-excel