Exceldate字段转换问题
我目前有一个Excel表格,其中一列是date格式。
当我打开电子表格时,我看到的是类似于12/29/09,程序看到的是40176。
我知道这是当我将列更改为一般文本时存在的值。
我的问题是如何读取值12/29/09而不是40176,或者如何将40176更改为有效date?
我的程序是在C#必须在C#
这里是我的连接的示例代码,如果有帮助的话。
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); string myPath = @"C:\Test.xls"; excelApp.Workbooks.Open(myPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0); Microsoft.Office.Interop.Excel.Sheets sheets = excelApp.Worksheets; Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1); excelApp.Visible = true; if(((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2 != null) DateString = ((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2.ToString();
您可以使用DateTime.FromOADate()将double转换为DateTime值。
正如Reed Copsey所说, DateTime.FromOADate()
方法会将该值转换为DateTime
。 但是,如果你想要12/29/09作为一个string,而不想进一步操纵它,你可以使用cell.Text
代替。
使用excel TEXT(val,format)
function。
例:
在A2单元格中input=today()
,如果进入单元格A2,则会得到一个类似于40189的数字
如果你input=TEXT(today(),"mm/dd/yyyy")
你会得到今天格式化为文本的date,它会看起来像"01/30/2012"
你可以使用文本function。
句法
Text(Value,FormatText)
例
1)我把40176放在一个excel A2 2)然后我在下面的公式中引用它
=TEXT(A2,"mm/dd/yy")
在A3上
然后价值来到12/29/09。 就像你问的一样
警告:
如果你把单引号,而不是双引号,它可能无法正常工作