为什么行中的日期会自动转换?
Why is the Date in Row being transformed automatically?
我正在使用 Miscrosoft Office Interop Excel 来排序和管理“.csv”文件并创建一个 excel 文件。
例如,当我复制一个包含日期的单元格时:
"04/05/2018 18:55"
我将其子字符串化为
"04/05/2018"
并将其粘贴到另一个单元格中,它会将其转换为这个奇怪的数字
43195
为什么会这样?我该如何防止或修改它?我目前正在传递信息。像这样:
String date = worksheet.Cells[1, 1].Value2.ToString();
worksheet.Cells[1, 2].Value2 = date; //this shows up as 43195
真的没有被改造。 Excel 实际上将所有日期存储为一个数字,表示自 1/0/1900 以来的天数(真的!)。您在单元格中看到的是表示日期的原始数值。如果您打开结果电子表格,突出显示您的列,右键单击并 select 格式化,然后 select“日期”,您会看到它显示您期望的日期。
所以您将要在您的代码中执行此操作。假设您的日期在“B”列中并且您的工作表是“ws”:
ws.Range[“B:B”].NumberFormat = “mm/dd/yyyy”;
这假定美国日期格式。
我正在使用 Miscrosoft Office Interop Excel 来排序和管理“.csv”文件并创建一个 excel 文件。
例如,当我复制一个包含日期的单元格时:
"04/05/2018 18:55"
我将其子字符串化为
"04/05/2018"
并将其粘贴到另一个单元格中,它会将其转换为这个奇怪的数字
43195
为什么会这样?我该如何防止或修改它?我目前正在传递信息。像这样:
String date = worksheet.Cells[1, 1].Value2.ToString();
worksheet.Cells[1, 2].Value2 = date; //this shows up as 43195
真的没有被改造。 Excel 实际上将所有日期存储为一个数字,表示自 1/0/1900 以来的天数(真的!)。您在单元格中看到的是表示日期的原始数值。如果您打开结果电子表格,突出显示您的列,右键单击并 select 格式化,然后 select“日期”,您会看到它显示您期望的日期。
所以您将要在您的代码中执行此操作。假设您的日期在“B”列中并且您的工作表是“ws”:
ws.Range[“B:B”].NumberFormat = “mm/dd/yyyy”;
这假定美国日期格式。