我正在使用EPPlus包来读取.xlsx文件。我需要从单元格中读取时间间隔(TimeSpan)对象。 Excel单元格可能包含以"hh:mm"格式表示的数据,例如:"09:00"或"18:30"(不带引号)。
下面是我的代码:
string myString = workSheet.Cells[1,1].Value.ToString();
double d = double.Parse(myString);
DateTime dt = DateTime.FromOADate(d);
TimeSpan ts = new TimeSpan(dt.Hour, dt.Minute, dt.Second);
对于Excel文件中的“09:00”或“08:30”数据,myString包含“0.375”或“0.354166666666667”,因此可以按预期计算ts。 但是,对于Excel文件中的“10:00”,myString包含“30/12/1899 10:00:00 AM”,双精度值的解析失败,因此无法计算ts。
我不确定为什么会出现这种不一致的情况。如何从Excel单元格(更准确地说是具有常规格式的单元格)一致地读取双精度值?请帮忙。
以下是我的简化代码(在Siddharth Rout的建议后):
string myString = workSheet.Cells[1,1].Text.ToString();
TimeSpan ts = TimeSpan.Parse(myString);
到目前为止,它可以处理各种值。
?Format("09:00", "0.000000000000")
会得到0.375000000000
,同样地,?Format("08:30", "0.000000000000")
会得到0.354166666667
,而?Format("10:00", "0.000000000000")
则会得到0.416666666667
。因此,如果我们可以从单元格中获取"10:00",那么我们就可以开始了...看看string myString = workSheet.Cells[1,1].Text.ToString();
会给你什么? - Siddharth Rout