使用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))}