为什么行中的日期会自动转换?

时间:2018-12-06 14:08:50

标签: c# .net excel-interop winforms-interop

我正在使用Miscrosoft Office Interop Excel来排序和管理“ .csv”文件,并创建一个excel文件。

例如,当我复制一个包含日期的单元格时:

  

“ 04/05/2018 18:55”

我将其细分为

  

“ 2018年4月5日”

并将其粘贴到另一个单元格中,它将其转换为这个奇怪的数字

  

43195

为什么会这样?我该如何预防或修改?我目前正在传递信息。像这样:

String date = worksheet.Cells[1, 1].Value2.ToString();
worksheet.Cells[1, 2].Value2 = date; //this shows up as 43195

1 个答案:

答案 0 :(得分:2)

它并没有真正改变。 Excel实际上将所有日期存储为一个数字,表示自1/0/1900以来的天数(真的!)。您在单元格中看到的是代表日期的原始数值。如果打开结果电子表格,请突出显示您的列,右键单击并选择格式,然后选择“日期”,您会看到它显示您期望的日期。

因此您将要在代码中执行此操作。假设您的日期在“ B”列中,而工作表在“ ws”中:

ws.Range[“B:B”].NumberFormat = “mm/dd/yyyy”;

这采用美国日期格式。