c# - 使用 EPPlus 返回 INT 的 Excel 日期列

标签 c# excel epplus

所以我正在使用 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/

相关文章:

asp.net-mvc - EPPlus 失去行高

c# - 查找可用时间段 C#

c# - 从C++启动Unity(控制与可视化解耦)

c# - 从 c++ DLL 和 c# 中释放 SAFEARRAY

c# - 具有 Dynamic 365 身份验证的 Azure 函数 - 无法加载类型 'System.Security.Cryptography.SHA256Cng'

SQL Server 2012管理工作室: Export to Excel

c# - EPPlus:应用 LoadFromCollection 后如何在每个单元格周围分配边框?

c# - 将日期时间格式 -"yyyyMMddhhmmssfff"的字符串转换为“DD-MM-YYYY HH :MM) before exporting DataTable to excel

vba - 简单的 vba 代码给我运行时错误 91 对象变量或未设置 block

excel - 将字符串从用户表单移动到调用表单的事件单元格