2010-04-30 162 views
3

我正在使用命名範圍從excel中讀取單元格值,在某些情況下,列寬度小於單元格中存在的值,因此它顯示爲# ####當它是巨大的數字。單元格值在excel中讀取爲####

當我從csharp讀取它時,它讀取爲#####。此

示例代碼的任何修正:

Excel.Application.get_Range(strRange, Type.Missing).Text.ToString() //If i make it 
Excel.Application.get_Range(strRange, Type.Missing).Value2.ToString() //and read any date string i get 40390 
+0

一些代碼,請? – 2010-04-30 11:34:48

+0

你可以顯示文件中的示例嗎?至少有幾行? – 2010-04-30 11:45:56

+0

Excel.Application.get_Range(strRange,Type.Missing).Text.ToString() 如果我使它Excel.Application.get_Range(strRange,Type.Missing).Value2.ToString()和讀取任何日期字符串,我得到40390 – SSK 2010-04-30 11:56:50

回答

3

沒有有任何代碼來讀取我猜你正在閱讀的顯示字符串或類似的,這Excel將各行的寬度變化時更新。

您可能需要閱讀更原始的價值。

+0

是的,現在我讀爲.Text而不是.Value2這是因爲當我讀取日期我得到整數值有沒有辦法呢? – SSK 2010-04-30 11:52:29

+0

這是因爲Excel中的日期存儲存儲爲整數。日期時間存儲爲浮點數。該格式被稱爲OLE日期。要確定該值是否爲日期,您還需要檢查單元格的格式。 – Ian 2010-04-30 14:37:56

0

您是否試圖導入否定日期? Excel不能很好地處理這些問題,處理日期通常是雙打的。

2

.Text爲您提供了任何您在Excel渲染層中格式化的內容(如果列太小,則爲####) .Value2爲您提供基礎Excel值。

Excel中的日期/時間內部存儲爲代表自1900年以來的天數1月0日加上小數部分表示時間的24小時小數,因此您的日期以整數形式顯示。

如果要數轉換回你可以使用格式的日期:例如 格式(40390,「DDMMYYYY」)或格式(40390,「日/月/ YYYY」)

+0

或者您可以將雙精度轉換爲日期: DateTime date = DateTime.FromOADate(d) – Mathias 2010-04-30 18:04:28

相關問題