【发布时间】:2019-04-26 12:13:31
【问题描述】:
我正在通过 oledb 读取 xlsx 文件。有些行的列(包含日期字符串)返回 null,有些行的列(也包含日期字符串)返回日期字符串。在 excel 中,列类型设置为“日期”。
这是我的连接字符串:
$"Provider=Microsoft.ACE.OLEDB.12.0;数据 源={PATH_TO_FILE};扩展属性=\"Excel 12.0 Xml;HDR=NO\""
这是查询数据的命令文本:
$"SELECT * FROM [SHEET_NAME$A4:BC] WHERE F1 不为空"
这是我从数据记录中读取数据的方式:
var test = dataRecord.GetValue(dataRecord.GetOrdinal("F39"));
她是检查员在测试包含日期字符串时向我展示的一些示例:
{07.01.1975 00:00:00}
{03.08.1987 00:00:00}
{03.10.1988 00:00:00}
{01.05.1969 00:00:00}
{20.12.2016 00:00:00}
{18.07.2011 00:00:00}
在其他情况下,检查器只显示:
{}
这是来自 xlsx 文档的屏幕截图,其中我在返回值为空的地方标记了一条红色的行,在返回实际日期字符串的地方标记为绿色:
日期字符串的格式类似于dd.mm.yyyy
为什么这些行返回一个空值而不是日期字符串?
正如 AndyG 所建议的,我已经检查了日期字符串值是否可能因格式而失败(“dd.mm.yyyy”与“mm.dd.yyyy”)。但是有些情况对于“mm.dd.yyyy”无效,但不会失败。
【问题讨论】:
-
日期是否以可接受的 mm.dd.yyyy 格式工作,而失败的日期是 dd.mm.yyyy? IE。美国 vs 英国格式。
-
"18.07.2011" 返回日期字符串,对 "mm.dd.yyyy" 无效。