c# - Range.Value 在 VBA 和 C# 中产生不同的结果

标签 c# vba excel vsto

我注意到 Range.Value 在 VBA 和 C# 中对日期值产生不同的结果。

例如,如果一个单元格的值是 5/13/1988,NumberFormat d/m/yyyy,在 VBA Range.Value 中将返回“5/13/1988”,而在 C# 中它返回“5/13/1988 12: 00:00 AM”

Range.Value2 在两种语言中是相同的 (32276)。

有谁知道为什么 VBA 和 C# 在这种情况下会产生不一致的结果?

请注意,我知道我可以使用 Range.Value2 和 Range.NumberFormat 的组合,然后在 C# 中格式化该值,但我对行为不一致的原因很感兴趣。

最佳答案

简单。在 Excel Interop 中(您在 VSTO 项目中引用)MS 显然已将 Date 单元格值映射到 .Net DateTime 数据类型。

他们的最佳选择,您不想像 Date .Net 数据类型那样使用(记住 VB classic 只有 Date 数据类型,没有 DateTime)。

在这里查看 excel 如何处理数据:https://stackoverflow.com/a/13983731

关于c# - Range.Value 在 VBA 和 C# 中产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409027/

相关文章:

mysql - 单击事件上的 Access 表单创建传递查询

asp.net - 获取文件的真实扩展名 vb.net

vba - Excel:从工作表调用 vba 函数时将当前单元格作为参数传递

Excel公式,找到字符串中OU=的第一个实例并删除它前面的所有字符

excel - 使用 VBA 以编程方式忽略 Excel 中的 'Number Stored as Text' 错误

c# - 为什么我的 Storyboard 只运行一次?

c# - 读取xml文件并将id的值写入C#中的相关文本框中

r - 有没有办法直接从 excel 表中准备数据以在 R 中执行统计测试?

c# - 如何使用 MVVM 从 DataGrid 传递有关所选项目的信息

c# - C# 中的 Helix Toolkit 显示层点云