[英]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
格式 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.