读取date时间值从Excel工作表中读取

当我试图从Excel表格中读取date时间types值时,它将返回一个double值。例如,如果想要读取这样的值'2007-02-19 14:11:45.730' ,那么我会得到一个doubletypes的值。我使用时间跨度转换这个双重价值,但没有成功完成,因为我只得到这个值'2007-02-19 12:00:00 AM'
现在我想要第一个完全相同的date时间值。 我的代码是这样的: –

 TimeSpan datefromexcel = new TimeSpan(Convert.ToInt32((range.Cells[rCnt, cCnt] as Excel.Range).Value2), 0, 0, 0); DateTime inputdate = new DateTime(1900, 1, 1).Add(datefromexcel); arrrow2[cCnt - 1] = inputdate.ToString(); 

请帮忙!!! 谢谢。

您需要通过使用DateTime.FromOADate将date格式从OLE自动化转换为.net格式。

 double d = double.Parse(b); DateTime conv = DateTime.FromOADate(d); 

也许你可以尝试使用DateTime.FromOADate方法在Excel和.net之间进行转换。

读取date时间值从Excel工作表:尝试这将是工作。

 string sDate = (xlRange.Cells[4, 3] as Excel.Range).Value2.ToString(); double date = double.Parse(sDate); var dateTime = DateTime.FromOADate(date).ToString("MMMM dd, yyyy"); 

或者你可以简单地使用OleDbDataAdapter从Excel中获取数据

或者,如果您的单元格已经是真正的date,只需使用.Value而不是.Value2:

 excelApp.Range[namedRange].Value {21/02/2013 00:00:00} Date: {21/02/2013 00:00:00} Day: 21 DayOfWeek: Thursday DayOfYear: 52 Hour: 0 Kind: Unspecified Millisecond: 0 Minute: 0 Month: 2 Second: 0 Ticks: 634970016000000000 TimeOfDay: {00:00:00} Year: 2013 excelApp.Range[namedRange].Value2 41326.0 

我有一个类似的情况,我用下面的代码来获取这个工作..

 Aspose.Cells.LoadOptions loadOptions = new Aspose.Cells.LoadOptions(Aspose.Cells.LoadFormat.CSV); Workbook workbook = new Workbook(fstream, loadOptions); Worksheet worksheet = workbook.Worksheets[0]; dt = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxDisplayRange.RowCount, worksheet.Cells.MaxDisplayRange.ColumnCount, true); DataTable dtCloned = dt.Clone(); ArrayList myAL = new ArrayList(); foreach (DataColumn column in dtCloned.Columns) { if (column.DataType == Type.GetType("System.DateTime")) { column.DataType = typeof(String); myAL.Add(column.ColumnName); } } foreach (DataRow row in dt.Rows) { dtCloned.ImportRow(row); } foreach (string colName in myAL) { dtCloned.Columns[colName].Convert(val => DateTime.Parse(Convert.ToString(val)).ToString("MMMM dd, yyyy")); } /*******************************/ public static class MyExtension { public static void Convert<T>(this DataColumn column, Func<object, T> conversion) { foreach (DataRow row in column.Table.Rows) { row[column] = conversion(row[column]); } } } 

希望这可以帮助一些thx_joxin

你可能想尝试一下简单的function,我张贴在另一个线程有关阅读date值从Excel表单。

它只是将单元格中的文本作为input,并将DateTime作为输出。

我会很高兴看到为.NET开发社区所提供的示例代码的改进。

这里是线程C#不从电子表格读取Exceldate的链接