2012-03-06 13 views
2

私はExcelファイルを持って、それの一つが列だがDateTime値を持っています.NET C#Excelファイルを読み取るDateTime列の読み取り時間が1秒以下の理由

01.03.2012 10:00 
02.03.2012 10:00 
03.03.2012 10:00 
04.03.2012 10:00 

そして私は、このコードを読んでいます:

OleDbDataAdapter command = new OleDbDataAdapter("select * from [" + sheetName + "$]", Conn); 
command.Fill(Result); 

興味深いことに、Excelファイルからのデータが正確に来ますこのような

01.03.2012 10:00:00 
02.03.2012 09:59:59 
03.03.2012 09:59:59 
04.03.2012 09:59:59 

、残りの値は9時59分59秒を行っている...最初の値のみがデータテーブルコになる(第1列は正しいが、1秒以下である他)直ぐに。

なぜ私はこの問題を抱えていますか、それを正確にExcelファイル上に取得する方法はありますか?

ご協力いただきありがとうございます。 ありがとうございます。

答えて

2

それはあなたのExcelシートに実際に10時ではありません。

  • 1秒のように保持されている1 /(24 * 60 * 60)= 0.00001157407
  • 十時00分00秒は、0.41666666667
  • 9時59分59秒として保持されている他のセルに、あなたの時間をコピーし、7つのまたは8小数点以下と数字としてそれらをフォーマット0.41665509259

として保持されています。私の推測では、9:59:59に変換された値は0.41666666667より小さく、丸められているのではなく切り捨てられています。

+0

私はあなたの意見を見ます。どうもありがとうございました! –

1

実際に09:59:59がExcelスプレッドシートにあると思われます。その表示形式は、10:00に「丸め」ます。どのセルの書式設定が適用されているかを確認します。 Excelがその形式で時刻を保持していないので、

+0

はい、これは私が見る唯一の解決策です。この問題はまったくありませんでした – squelos

+0

私のExcelシートには10​​時ですが、私の質問には09:59:59ではありません。実際には同じExcelファイルで、別のシートには19:00があり、C#で19:00:00と読み込まれます。そして私は10時にそれをもう一度チェックしました。それは本当に10:00:00です。 –

関連する問題