我使用OpenXml在Excel中创建图表。该图显示了两个DateTime之间经过时间的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出现一些问题,因为它不支持日期时间。
我迄今为止找到的最佳解决方案是将其转换为DateTime的两倍,并将其写入单元格,但这看起来很难看,我宁愿保持我的小时/分钟格式
答案 0 :(得分:0)
我设法通过将单元格写为数字单元格来解决此问题,因为可以使用数字单元格类型来编写日期。虽然它似乎不支持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))}