tags:

views:

716

answers:

2

I currently have an excel sheet with one of the columns being in the date format.

What I see when I open up the spreadsheet is something like 12/29/09 and the program sees 40176.

I figured out this is the value present when I change the column to general text.

My question is how can I read the value 12/29/09 instead of 40176 or how can I change 40176 into a valid date?

My program is in c# Must be read in in c#


Here is sample code of my connection if it helps any.

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  A: 

You can use DateTime.FromOADate() to convert the double into a DateTime value.

Reed Copsey
A: 

As Reed Copsey said, the DateTime.FromOADate() method will convert the value into a DateTime. If, however, you want 12/29/09 as a string, and don't want to manipulate it any further, you can use cell.Text instead.

Ant