一個DateTime值。如果我把日期時間值轉換成使用Range.set_value
通過淨COM互操作一個Excel單元格,然後使用Range.get_value
檢索同一單元格的值,則毫秒部分缺失該值不會被返回,儘管一切都是正確的。毫秒獲得當從Excel中使用.NET互操作程序
這是一個錯誤?
解決方法是什麼?我猜測使用Value2屬性可能會有所幫助。有其他人試過嗎?
一個DateTime值。如果我把日期時間值轉換成使用Range.set_value
通過淨COM互操作一個Excel單元格,然後使用Range.get_value
檢索同一單元格的值,則毫秒部分缺失該值不會被返回,儘管一切都是正確的。毫秒獲得當從Excel中使用.NET互操作程序
這是一個錯誤?
解決方法是什麼?我猜測使用Value2屬性可能會有所幫助。有其他人試過嗎?
由於Jon suggested,轉換日期時間爲雙用DateTime.ToOADate(然後再回到使用DateTime.FromOADate)工程如果使用Range.Value2屬性設置該值。
此屬性的唯一問題是,如果您還不知道,它不會告訴您該單元格應該被視爲DateTime。我想要解決這個問題,你需要使用兩步法:使用Range.get_Value獲取單元格值來確定它們的類型,然後,對於任何DateTime單元格,再次使用Range.Value2獲取它們的值,然後使用DateTime .FromOADate。
如果您手動在Excel中以毫秒值設置日期/時間,它是否會保留它?我不知道Excel內部對象模型,但可以想象,它不支持毫秒。
編輯:好吧,現在我們知道該設置失敗(當然也可能會失敗)...您可以嘗試通過DateTime.ToOADate()轉換後將其設置爲雙精度。我不是說我伸出多希望,但它是值得一試...
這可能是因爲this KB article中描述的問題。
在這種情況下,應該設置Value2屬性。
Jon, 是的,它確實維持它,但您必須使用自定義單元格格式來顯示毫秒組件以及日期時間部分。 – 2008-11-18 11:19:34
並且使用.NET進行設置後,如果保存工作表,可以使用自定義格式查看結果嗎? (這應該表明問題是否與設置或得到。) – 2008-11-18 11:21:19