2008-11-18 55 views
2

一個DateTime值。如果我把日期時間值轉換成使用Range.set_value通過淨COM互操作一個Excel單元格,然後使用Range.get_value檢索同一單元格的值,則毫秒部分缺失該值不會被返回,儘管一切都是正確的。毫秒獲得當從Excel中使用.NET互操作程序

這是一個錯誤?

解決方法是什麼?我猜測使用Value2屬性可能會有所幫助。有其他人試過嗎?

回答

2

由於Jon suggested,轉換日期時間爲雙用DateTime.ToOADate(然後再回到使用DateTime.FromOADate)工程如果使用Range.Value2屬性設置該值。

此屬性的唯一問題是,如果您還不知道,它不會告訴您該單元格應該被視爲DateTime。我想要解決這個問題,你需要使用兩步法:使用Range.get_Value獲取單元格值來確定它們的類型,然後,對於任何DateTime單元格,再次使用Range.Value2獲取它們的值,然後使用DateTime .FromOADate。

4

如果您手動在Excel中以毫秒值設置日期/時間,它是否會保留它?我不知道Excel內部對象模型,但可以想象,它不支持毫秒。

編輯:好吧,現在我們知道該設置失敗(當然也可能會失敗)...您可以嘗試通過DateTime.ToOADate()轉換後將其設置爲雙精度。我不是說我伸出希望,但它是值得一試...

+0

Jon, 是的,它確實維持它,但您必須使用自定義單元格格式來顯示毫秒組件以及日期時間部分。 – 2008-11-18 11:19:34

+0

並且使用.NET進行設置後,如果保存工作表,可以使用自定義格式查看結果嗎? (這應該表明問題是否與設置或得到。) – 2008-11-18 11:21:19

2

這可能是因爲this KB article中描述的問題。

在這種情況下,應該設置Value2屬性。