Excel日期字段转换问题

时间:2009-04-21 04:51:34

标签: c# excel

我目前有一张excel表,其中一列是日期格式。

我打开电子表格时看到的内容类似于12/29/09,程序看到了40176.

我发现这是将列更改为常规文本时的值。

我的问题是如何读取12/29/09 而不是40176?或者如何将40176更改为有效日期?

我的程序在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();

4 个答案:

答案 0 :(得分:12)

您可以使用DateTime.FromOADate()将double转换为DateTime值。

答案 1 :(得分:2)

正如Reed Copsey所说,DateTime.FromOADate()方法会将值转换为DateTime。但是,如果您希望将12/29/09作为字符串,并且不想再操纵它,则可以使用cell.Text代替。

答案 2 :(得分:1)

使用excel TEXT(val,format)功能。

示例:

在单元格A2中输入=today(),你会得到一个像40189这样的数字 如果你进入单元格A2

如果您输入=TEXT(today(),"mm/dd/yyyy"),今天的日期格式化为文字,它将显示为"01/30/2012"

答案 3 :(得分:0)

您可以使用文字功能。

<强>语法

Text(Value,FormatText)

示例

1)我把40176放在excel A2中 2)然后我在下面的公式中引用它

 =TEXT(A2,"mm/dd/yy")
A3上的

然后价值是12/29/09。就像你问的那样

<强>注意:

如果您使用单引号而不是双引号,则可能无效