使用OpenXML API读取Excel时间值

我有一个有时间栏的Excel表。 它的时间列目前是数据types“时间”(下午6:00:00),但是,我已经尝试了“自定义”数据types(下午6:00)。

我使用openXML库读取这个单元格的值如下:

row.XCells[9].GetValue() 

我读的价值是0.75。 这是我将数据types更改为数字时看到的值。 我想将其转换为C#后端的时间跨度。 我怎么做?

  var ts = TimeSpan.Parse(row.XCells[9].GetValue()); 

不起作用。

可以使用DateTime.FromOADate将Exceldate和时间转换为C# DateTime.FromOADate 。 一旦你有了DateTime你可以使用TimeOfDay属性来获得一个TimeSpan (date时间的date是1899年12月30日这是OLE自动化的基准date)

 TimeSpan t = DateTime.FromOADate(row.XCells[9].GetValue()).TimeOfDay; Console.WriteLine(t.ToString(@"hh\:mm\:ss")); // prints 18:00:00