You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用ExcelPackage导出数据时日期显示为数字的问题

解决ExcelPackage导出Excel时日期显示为数字的问题

嘿,我来帮你搞定这个头疼的问题!其实这个现象很常见——Excel本身就是把日期存储为序列号(从1900年1月1日开始计数的数字),如果我们只把DateTime值写入单元格,却没设置对应的日期格式,Excel就会直接显示这个序列号数字,而不是我们熟悉的日期样式。

下面给你具体的解决方案,核心就是给写入日期的单元格或列设置日期格式:

具体实现步骤

你需要在generateReport()函数里,给存放日期的单元格或列设置格式。举几个常用的场景:

1. 单个单元格设置日期格式

假设你在A2单元格写入了日期,直接给这个单元格指定格式:

private void generateReport()
{
    // 创建工作表
    var worksheet = package.Workbook.Worksheets.Add("数据报表");
    
    // 写入日期值
    worksheet.Cells["A2"].Value = DateTime.Now;
    
    // 设置单元格为日期格式,这里用"yyyy-MM-dd",你可以换成自己需要的样式
    worksheet.Cells["A2"].Style.NumberFormat.Format = "yyyy-MM-dd";
}

2. 整列批量设置日期格式

如果你的日期都在同一列(比如A列),可以直接给整列设置格式,避免逐个单元格处理:

// 设置A列所有单元格为日期格式
worksheet.Cells["A:A"].Style.NumberFormat.Format = "yyyy-MM-dd HH:mm:ss";

3. 常用日期格式参考

你可以根据需求替换格式字符串,比如:

  • yyyy-MM-dd → 2024-05-20
  • MM/dd/yyyy → 05/20/2024
  • yyyy年MM月dd日 → 2024年05月20日
  • yyyy-MM-dd HH:mm:ss → 2024-05-20 14:35:00

关键提醒

一定要确保在写入日期值之后设置格式,或者在赋值前先设置格式也可以——只要保证单元格最终应用了日期格式规则,Excel就会自动把序列号转换成可读的日期样式。

内容的提问来源于stack exchange,提问作者Srinidhi Bhandary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:29:05