Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#TimeSpan在开放式XML中的Excel_C#_Excel_.net 4.0_Openxml_Openxml Sdk - Fatal编程技术网

C#TimeSpan在开放式XML中的Excel

C#TimeSpan在开放式XML中的Excel,c#,excel,.net-4.0,openxml,openxml-sdk,C#,Excel,.net 4.0,Openxml,Openxml Sdk,我正在做一个项目,在MS Word 2010文档中创建一个显示时间的条形图。主程序将这些时间存储在列表中 我使用word中的插入图表功能创建了一个示例word文档,并制作了一个具有不同时间的条形图(每个时间大约1小时,格式为,例如01:04:04)(使用此代码作为模板) 我查看了OpenXMLSDK2.0生产力工具,发现它是在反映的代码中生成的(如上面的示例所示): 如果我想使用我的列表自动生成此值,如何将我的时间跨度转换为这个小数值?这是时间跨度.TotalDays 另外,查看Word文档(右

我正在做一个项目,在MS Word 2010文档中创建一个显示时间的条形图。主程序将这些时间存储在
列表中

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

我查看了OpenXMLSDK2.0生产力工具,发现它是在反映的代码中生成的(如上面的示例所示):

如果我想使用我的
列表
自动生成此值,如何将我的时间跨度转换为这个小数值?这是
时间跨度.TotalDays


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

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

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

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


与其将时间跨度直接输入Excel,为什么不输入开始时间和结束时间?这样您就可以了。列表数据来自单独项目生成的单独数据库。它们表示执行某些任务的平均时间,因此没有开始/完成日期。此Excel/word文档的目的是在图表中报告平均值ical方式。您可以随时创建任意的开始时间,然后从对象中添加时间以获得“结束时间”。如何显示您如何设置日期格式,以了解您为什么看到
AM/PM
,这听起来像
string.Format()
issue@Okuma.Cott这是事实。但我真正的问题是,如何将我的时间跨度(或开始/完成时间)转换为较小的数字,例如,OpenXMLSDK生产力工具如何将01:04:04转换为“4.449074074E-2”谢谢…我不确定这个公式是否能正确显示条形图。另外,真正的问题是,如何将c#timespan(例如1:04:04)转换为数字0.0444907407,因为我正在生成带有c#代码的文档。我从图像中了解您的意思。谢谢。
// A1 being what ever cell your original data is in
=TEXT(A1, "h:mm:ss")