使用 OpenXML API 读取 excel 时间值

Reading excel time value using OpenXML API

我有一个 excel sheet,它有一个时间列。它的时间列当前是数据类型 'Time' (6:00:00PM),但是,我也尝试过 'Custom' 数据类型 (6:00PM)。

我使用 openXML 库读取此单元格值,如下所示:

row.XCells[9].GetValue()

我读到的值是 .75。这是我将数据类型更改为数字时看到的值。我想在我的 C# 后端将其转换为时间跨度。我该怎么做?

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

无效。

Excel 日期和时间可以使用 DateTime.FromOADate 转换为 C# DateTime。获得 DateTime 后,您可以使用 TimeOfDay 属性 获得 TimeSpanDateTime 的日期为 30-Dec-1899,即OLE 自动化基准日期)

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