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。 就像你问的一样

警告:

如果你把单引号,而不是双引号,它可能无法正常工作