Обработка времени excel, импортированного из excel, с помощью Microsoft.ACE.OLEDB C#

Я импортирую файл Excel, используя C# and JetOLEDb (Microsoft.ACE.OLEDB for excel 2010 and beyond), и использую следующий код:

  var fileName = @"C:\myexcel.xlsx";
        var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName);

        var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
        var ds = new DataSet();
        adapter.Fill(ds, "anyNameHere");
        System.Data.DataTable data = ds.Tables["anyNameHere"];

Проблема в

когда я пытаюсь импортировать значения DateTime, эти значения возвращаются как время excel, например, «01.03.2013» возвращается как 41334.

Как преобразовать эти значения в .net DateTime и как проверить, являются ли они значениями даты и времени или просто обычными удвоениями


person Hassan Mokdad    schedule 14.05.2013    source источник
comment
Вы можете начать с DateTime.FromOADate(date), чтобы выполнить преобразование в DateTime из double. DotNetPearls   -  person DaveH    schedule 14.05.2013
comment
Спасибо, но как проверить, были ли эти значения изначально значениями даты и времени или просто обычными удвоениями   -  person Hassan Mokdad    schedule 14.05.2013
comment
Вы должны иметь возможность использовать Interop и создавать данные в цикле. Вы можете проверить Range.NumberFormat в каждой ячейке, чтобы увидеть, была ли это дата или двойная (  -  person DaveH    schedule 14.05.2013