使用Excel Interop时会忽略在Excel中设置的日期格式

时间:2019-07-08 12:05:12

标签: c# excel office-interop excel-interop

我正在使用Microsoft Office C#库(Microsoft.Office.Interop.Excel)将一些值写入到现有的excel文件中。

在Excel中,我已经将文件中的某些单元格格式化为日期,如屏幕截图所示: enter image description here

如您所见,该单元格设置为dd/MM/yyyy格式。

但是,当我随后使用互操作库编写值时,如下所示:

cell.Value2 = "20/06/2019"

我注意到它没有用:当我在Excel中打开最终文件时,该单元格被解释为纯文本,而不是日期。

因此,我进行了一些调试,结果发现我为单元格设置的格式被完全忽略了,并且互操作库使用的是美国格式,如您通过检查的NumberFormat属性可以看到的带有Visual Studio调试器的单元:
enter image description here

我在这里做错了什么?为什么要强制使用美国日期格式?
一些其他信息:

  • 默认情况下,我的操作系统语言环境(意大利语)使用dd/MM/yyyy格式
  • 我没有以任何方式更改c#应用程序的语言环境
  • 我的Excel副本设置为意大利语,默认情况下也应使用dd/MM/yyyy格式。我在选项->语言下进行了检查,可以确认这一点。

编辑:我发现了一件有趣的事情:如果我双击一个单元格,然后单击它,则它“神奇地”修复了格式。我可以使用Excel Interop模拟单元格上的双击吗?

1 个答案:

答案 0 :(得分:1)

Excel中的日期存储为代表OLE自动化日期的双精度形式。 MSDN

在您的情况下,您正在设置字符串值。 在Excel中设置日期的正确方法如下:

68.183.217.125