【发布时间】:2017-02-02 20:49:16
【问题描述】:
我正在使用 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.3541666666666667”,可以按预期计算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);
到目前为止,它正在使用各种值。
【问题讨论】:
-
A Shot in the dark :
?Format("09:00", "0.000000000000")in VBA 给出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();给你什么? -
太棒了!字符串 myString = workSheet.Cells[1,1].Text.ToString();正在给出所需的双精度值。需要彻底检查。非常感谢。
-
@SiddharthRout 应该将此添加为答案,Choudhury 应该接受它。