所以我正在使用EPPlus来读写excel文档.
工作流程
我在使用EPPlus创建文档时生成的日期在我正在读取值时正确显示,但是用户更改日期或添加的行显示为INT值而不是我可以用作实际日期的值.
当我输入日期1/01/2014并写入时,我打开文件时的输出显示41640
我正在读它如下
sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Value != null
? sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Value.ToString().Trim()
: string.Empty
Run Code Online (Sandbox Code Playgroud)
更新
导出文件时,我添加了以下内容
DateTime testDate;
if (DateTime.TryParse(split[i], out testDate))
{
sheet.Cells[row, i + 1].Style.Numberformat.Format = "MM/dd/yyyy";
sheet.Cells[row, i + 1].Value = testDate.ToString("MM/dd/yyyy");
}
Run Code Online (Sandbox Code Playgroud)
在读取价值时我也试过了
sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Style.Numberformat.Format = "MM/dd/yyy";
Run Code Online (Sandbox Code Playgroud)
我还是回来了INT
Tim*_*ter 42
...当我需要读取该excel文件时,唯一不正确的日期是用户已更改的日期
因此,当您阅读修改后的excel表时,修改日期是数字,而未更改的值是日期格式的字符串?
你可以得到DateTime通道DateTime.FromOADate:
long dateNum = long.Parse(worksheet.Cells[row, column].Value.ToString());
DateTime result = DateTime.FromOADate(dateNum);
Run Code Online (Sandbox Code Playgroud)
使用您的样本编号:
Console.Write(DateTime.FromOADate(41640)); // -> 01/01/2014
Run Code Online (Sandbox Code Playgroud)