.Net Interopを使用してExcelからDateTime値を取得すると、ミリ秒が欠落する

StackOverflow https://stackoverflow.com/questions/298458

  •  08-07-2019
  •  | 
  •  

質問

.Net COM Interopを介して Range.set_value を使用してExcelセルにDateTime値を入力し、 Range.get_value を使用して同じセルの値を取得する場合、値のミリ秒部分は返されませんが、それ以外はすべて正しいです。

これはバグですか?

回避策は何ですか?代わりにValue2プロパティを使用すると役立つと思います。他の誰かがこれを試しましたか?

役に立ちましたか?

解決 2

として提案されたジョン、Range.Value2プロパティを使用して値を設定すると、DateTime.ToOADateを使用してDateTimeをdoubleに変換します(DateTime.FromOADateを使用して再び戻ります)。

このプロパティの唯一の問題は、あなたがまだ知らない場合、セルがDateTimeとして扱われることになっていることを通知しないことです。これを解決するには、2パスアプローチを使用する必要があると思います:Range.get_Valueを使用してセル値を取得し、タイプを決定してから、DateTimeセルについて、Range.Value2を使用して値を再度取得し、DateTimeを使用して変換します.FromOADate。

他のヒント

Excelでミリ秒値の日付/時刻を手動で設定した場合、それは維持されますか? Excelの内部オブジェクトモデルについては知りませんが、ミリ秒をサポートしていないことが考えられます。

編集:さて、これでセットが失敗することがわかりました(もちろん、取得も失敗する可能性があります)... DateTime.ToOADate()。希望を差し出しているとは言っていませんが、試してみる価値はあります...

このKB記事で説明されている問題が原因である可能性があります。

その場合、Value2プロパティの設定が機能するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top