我有一个 excel (xlsx 2010) 文档,其中只包含两列,一列用于日期时间,一列用于值,格式如下:
DateTime Value
01/09/2012 00:00:00 1.23456
02/09/2012 00:05:00 1.23457
03/09/2012 00:10:00 1.23458
04/09/2012 00:15:00 1.23459
日期时间列设置为自定义格式 (dd/mm/yyyy hh:mm:ss),所有时间都精确地位于 5 或 10 分钟标记上,秒始终为 00。
但是,当我使用以下方法阅读此内容时:
connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", filePath);
OleDbCommand sqlComm = new OleDbCommand("SELECT * FROM [Sheet1$]", new OleDbConnection(connectionString));
OleDbDataReader r = sqlComm.ExecuteReader();
前两个 DateTimes 被正确读取,但毕竟 DateTimes 比文件实际包含的内容少一秒,例如:
00:15:00 00:14:59
00:20:00 00:19:59
有谁知道为什么?或者我可以做些什么来纠正它,而不是手动检查它们并四舍五入到最近的分钟(在这种情况下是一个可行的选择 - 我认为)
PS。为了简洁起见,我已经剪切并粘贴了相关的代码行,所以上面的代码示例在技术上可能不起作用,但在真正的应用程序中它确实读取了文件