所以我正在使用 EPPlus 来读写 excel 文档。
工作流程
- 用户生成填充的 excel 文档
- 打开文档并添加一行
- 已上传并阅读
当我读回值时,我使用 EPPlus 创建文档时生成的日期正确显示,但用户更改日期 one 或添加的行显示为 INT 值,而不是我可以用作真实值的东西日期。
当我输入日期 1/01/2014 并写入时,打开文件时的输出显示 41640
我是这样读的
sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Value != null
? sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Value.ToString().Trim()
: string.Empty
更新
导出文件时我添加了以下内容
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");
}
同样在读回我尝试过的值时
sheet.Cells[i, "AE".ConvertExcelColumnIndex()].Style.Numberformat.Format = "MM/dd/yyy";
我仍然得到一个 INT
最佳答案
...when I need to read that excel file, the only dates that are incorrect are the ones the user has changed
因此,当您阅读修改后的 Excel 工作表时,修改后的日期是数字,而未更改的值是日期格式中的字符串?
您可以通过 DateTime.FromOADate
获取 DateTime
:
long dateNum = long.Parse(worksheet.Cells[row, column].Value.ToString());
DateTime result = DateTime.FromOADate(dateNum);
使用您的 sample 编号:
Console.Write(DateTime.FromOADate(41640)); // -> 01/01/2014
关于c# - 使用 EPPlus 返回 INT 的 Excel 日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24933947/