次の形式の、DateTime 用と値用の 2 つの列のみを含む 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();
最初の 2 つの DateTimes は正しく読み取られますが、すべての DateTimes は、ファイルに実際に含まれているものよりも 1 秒短くなります。
00:15:00 00:14:59
00:20:00 00:19:59
誰かが理由を知っていますか?または、手動でチェックして最も近い分に切り上げる以外に、それを修正するためにできること(この場合は実行可能なオプションだと思います)
PS。簡潔にするために関連するコード行を切り取って貼り付けたので、上記のコード サンプルは技術的には機能しない可能性がありますが、実際のアプリではファイルを読み取ります。