2

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

これはバグですか?

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

4

3 に答える 3

4

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

編集:さて、これでセットが失敗することがわかりました(もちろん、取得も失敗する可能性があります)... DateTime.ToOADate()を介して変換した後、 double として設定してみてください。私は多くの希望を持っていると言っているわけではありませんが、試してみる価値はあります...

于 2008-11-18T11:15:40.550 に答える
2

Jonが示唆したように、Range.Value2プロパティを使用して値を設定すると、DateTime.ToOADateを使用してDateTimeをdoubleに変換して(次にDateTime.FromOADateを使用して戻す)機能します。

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

于 2008-11-18T11:42:48.747 に答える
2

おそらく、この KB 記事に記載されている問題が原因です。

その場合、Value2 プロパティを設定すると機能します。

于 2008-11-18T11:42:52.587 に答える