Excel C#COM加载项返回带有日期和双精度的数组

Excel C#COM加载项返回带有日期和双精度的数组,c#,excel,interop,format,time-series,C#,Excel,Interop,Format,Time Series,我的C#Excel插件正在将一个时间序列转换为另一个时间序列 时间序列定义为两列范围,第一列为日期,第二列为浮点数 虽然我的C#代码返回日期的日期时间,但Excel会将其转换为以整数表示的Excel日期,显示的值是整数,例如39000,而不是日期格式,例如14/12/2012 因此,用户必须按CTRL+#将其转换为日期 是否有方法返回已被excel格式化为日期的C#excel加载项的输出?a)从返回值的代码中格式化单元格。例如,如果您有range对象的句柄,则可以执行类似于range.Numbe

我的C#Excel插件正在将一个时间序列转换为另一个时间序列

时间序列定义为两列范围,第一列为日期,第二列为浮点数

虽然我的C#代码返回日期的日期时间,但Excel会将其转换为以整数表示的Excel日期,显示的值是整数,例如39000,而不是日期格式,例如14/12/2012

因此,用户必须按CTRL+#将其转换为日期

是否有方法返回已被excel格式化为日期的C#excel加载项的输出?

a)从返回值的代码中格式化单元格。例如,如果您有range对象的句柄,则可以执行类似于
range.NumberFormat=“yyyy-mm-dd”
的操作

b) 在运行导入数据的代码之前,将单元格预格式化为日期格式。如果每次都使用相同的工作表,而不是空白或任意的工作表,这将起作用

c) 这是一个丑陋的黑客行为,但请尝试以字符串形式返回日期值,格式为“mm/dd/yyyy”。这将迫使Excel将值解释为日期。在这种情况下,机器区域设置不会影响翻译。

补充Adam的c)答案:
如果您有一个日期/时间变量,并使用.Value将其从子区域返回到单元格,则它会将单元格格式化为日期(使用VBA而不是C#进行测试:不确定是否可以使用interop使用.Value?
如果使用Range.Value2,则不会将单元格格式化为日期。

如果您试图从自定义项中执行此操作,则自定义项不会更改单元格的格式。

我认为您需要修改您的问题。。。一旦你说“加载项返回带有日期和双精度的数组”,然后你说excel将DateTime转换为什么??谢谢你的反馈。COM中的日期是一个浮点数,即自1899年1月1日以来的天数。所以39000差不多是对的。在我看来,单元格的默认格式是错误的。是的,没错,问题是除了数字之外,我是否还能以某种方式返回格式???