使用OpenXml将TimeSpan写入单元格,而不使用CellValues.Date DataType

我使用OpenXml在Excel中创build一个图表。 该图显示两个date时间之间经过的时间的TimeSpan。

我正在用下面的方式写下我逝去的时间

new Cell {DataType = new EnumValue<CellValues>(CellValues.Date), StyleIndex = 4, CellValue = new CellValue(ElapsedTime.ToString())} 

StyleIndex = 4对应的位置

 cellFormats.AppendChild(new CellFormat {NumberFormatId = 21, ApplyNumberFormat = true, FontId = 2, ApplyFont = true}); 

但是这对Excel 2007造成一些问题,因为它不支持date时间。

到目前为止,我发现的最好的解决scheme是将其转换为DateTime的双重等价物,并将其写入单元格,但看起来很难看,而且我宁愿保持小时/分钟格式。

我设法通过将单元格编写为数字单元格来解决此问题,因为数字单元格types可用于写入date。 尽pipe它似乎并不支持TimeSpans,但是我通过将TimeSpan表示为DateTime并将TimeSpan添加到DateTime的MinValue来解决此问题:

 new Cell {DataType = new EnumValue<CellValues>(CellValues.Number), StyleIndex = 4, CellValue = new CellValue(DateTime.MinValue.Add(platformOccupancyRow.ElapsedTime).ToOADate().ToString(CultureInfo.CurrentCulture))}