从Excel工作表读取日期时间值

Pra*_*nav 80 c# excel office-interop

当我试图从excel表读取datetime类型值时,它返回一个double值.例如,如果想要读取这样的值'2007-02-19 14:11:45.730',我得到一个double类型的值.另外我使用timespan转换这个double值,但是没有成功完成因为我现在只得到这个值,'2007-02-19 12:00:00 AM'
我想要与第一个完全相同的日期时间值.我的代码如下: -

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();
Run Code Online (Sandbox Code Playgroud)

请帮忙!!!谢谢.

Mik*_*son 198

您需要使用DateTime.FromOADate将日期格式从OLE自动化转换为.net格式.

double d = double.Parse(b);
DateTime conv = DateTime.FromOADate(d);
Run Code Online (Sandbox Code Playgroud)

  • +1显然,对upvoting的限制不应该适用于自己的问题. (3认同)

Tom*_*Tom 11

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


小智 8

从 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");
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,您的代码与接受的答案有何不同? (4认同)