C#TimeSpan到Open XML中的Excel

时间:2014-12-03 20:31:14

标签: c# excel .net-4.0 openxml openxml-sdk

我正在开发一个项目来创建一个显示MS Word 2010文档中时间的条形图。主程序将这些时间存储在List<TimeSpan>

我使用Word中的“插入图表”功能创建了一个示例word文档,并创建了一个不同时间的条形图(每个大约1小时,格式化为,例如,01:04:04。(使用此代码作为模板) )。

我查看了Open XML SDK 2.0 Productivity Tool,发现它是在反射代码中生成的(如上例所示):

numericValue9.Text = "4.449074074074074E-2"; //01:04:04

如果我想使用List<TimeSpan>自动生成此内容,如何将TimeSpans转换为此小数值?那是TimeSpan.TotalDays吗?

另外,查看Word文档(右键单击图表并选择编辑数据),我注意到“AM”附加到TimeSpan的末尾。 excel是否将我的时间跨度转换为日期时间?

1 个答案:

答案 0 :(得分:1)

正如DJ KRAZE所提到的,这种情况发生的原因是由于格式的格式 Open XML假设为DataType = CellValues.String,但如果它实际上不是字符串字符串,它将返回看起来不正确的内容(您的“小数字”)。

纠正此问题的方法只是将单元格格式化为文本。 您可以使用如下公式来执行此操作:

// A1 being what ever cell your original data is in
=TEXT(A1, "h:mm:ss")

结果:

result