Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Excel互操作时,Excel中设置的日期格式将被忽略_C#_Excel_Office Interop_Excel Interop - Fatal编程技术网

C# 使用Excel互操作时,Excel中设置的日期格式将被忽略

C# 使用Excel互操作时,Excel中设置的日期格式将被忽略,c#,excel,office-interop,excel-interop,C#,Excel,Office Interop,Excel Interop,我正在使用Microsoft Office C#library(Microsoft.Office.Interop.Excel)将一些值写入现有的Excel文件 在Excel中,我已经将文件中的一些单元格格式化为日期,如屏幕截图所示: 如您所见,单元格设置为dd/MM/yyyy格式 但是,当我使用interop库编写值时,如下所示: cell.Value2 = "20/06/2019" 我注意到它不起作用:当我在Excel中打开最后一个文件时,单元格被解释为纯文本,而不是日期 因此,我进行了一

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

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

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

但是,当我使用interop库编写值时,如下所示:

cell.Value2 = "20/06/2019"
我注意到它不起作用:当我在Excel中打开最后一个文件时,单元格被解释为纯文本,而不是日期

因此,我进行了一些调试,结果发现我为单元格设置的格式被完全忽略,互操作库使用的是美国格式,您可以通过使用visual studio调试器检查单元格的
NumberFormat
属性看到:

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

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

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

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

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

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

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

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

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

谢谢因此,基本上数字格式只用于显示数据,而不用于解释数据,对吗?“数字格式不影响Excel用于执行计算的单元格值。实际值显示在公式栏中”您可以在此处找到更多信息:谢谢。因此,基本上数字格式只用于显示数据,而不用于解释数据,对吗?“数字格式不影响Excel用于执行计算的单元格值。实际值显示在公式栏中“您可以在此处找到更多信息: