繁体   English   中英

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

[英]Date format set in Excel is ignored when using Excel Interop

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

在Excel中,我已经将文件中的某些单元格格式化为日期,如屏幕截图所示: 在此处输入图片说明

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

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

cell.Value2 = "20/06/2019"

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

因此,我进行了一些调试,结果发现我为单元格设置的格式被完全忽略了,并且互操作库正在使用美式格式,如通过使用Visual Studio调试器检查单元格的NumberFormat属性可以看到的那样:
在此处输入图片说明

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

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

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

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

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

cell.NumberFormat = "dd/MM/yyyy";
cell.Value = new DateTime(2019, 6, 20).ToOADate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM