5

我正在使用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);

到目前为止,它正在使用各种值。

4

1 回答 1

7

这是我的简化代码(根据 Siddharth Rout 的建议):

string myString = String.Format("{0}", workSheet.Cells[1,1].Text);
TimeSpan ts = TimeSpan.Parse(myString);

到目前为止,它正在使用各种值。

于 2013-12-17T11:50:20.460 回答