C# 如何让excel UDF返回实际日期时间,而不是常规或双精度?

C# 如何让excel UDF返回实际日期时间,而不是常规或双精度?,c#,visual-studio,excel,C#,Visual Studio,Excel,您好,我已经创建了一个Excel自定义项,它返回一个字符串、日期和整数数组。但是Excel会将我的日期时间值转换为双精度值,因此我必须在Excel中手动选择这些值并转换为短日期。如果我在c代码中将日期转换为字符串,excel会将其识别为常规值,因此无法获取该单元格的值。有解决办法吗 提前谢谢 正如您所注意到的,Excel没有将值作为日期/时间的内部表示形式-日期只是应用了不同格式的两倍。一些内置函数,如=TODAY,是Excel内部的特殊情况,可以自动应用日期格式。Excel没有让用户定义的函数

您好,我已经创建了一个Excel自定义项,它返回一个字符串、日期和整数数组。但是Excel会将我的日期时间值转换为双精度值,因此我必须在Excel中手动选择这些值并转换为短日期。如果我在c代码中将日期转换为字符串,excel会将其识别为常规值,因此无法获取该单元格的值。有解决办法吗


提前谢谢

正如您所注意到的,Excel没有将值作为日期/时间的内部表示形式-日期只是应用了不同格式的两倍。一些内置函数,如=TODAY,是Excel内部的特殊情况,可以自动应用日期格式。Excel没有让用户定义的函数选择这种特殊行为的机制

一种解决方法,尽管不是我建议的,是在计算完成后运行一个宏来更改调用单元格的格式。根据Application.Caller/xlfCaller存储需要重新格式化的单元格,并从计算事件处理程序或使用Application.OnTime计划运行宏来更改单元格格式


这太难看了。

请展示一些代码,这样就不会有代表每个人的猜测。这只是我的一个一般性问题。我可以创建一个简单的excel UDF,返回一个对象。如果我返回一个datetime,那么excel会自动将其转换为double,因为excel就是这样描述日期的。我可以选择具有该双倍数字的单元格,然后将单元格格式化为短日期,以实际查看正确的格式。但是我想知道是否有一个解决方法,所以我不需要点击单元格并手动转换。啊,谢谢你帮我解决这个问题!也有点离题,但在excel DNA上做得很好。