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-20MM/dd/yyyy→ 05/20/2024yyyy年MM月dd日→ 2024年05月20日yyyy-MM-dd HH:mm:ss→ 2024-05-20 14:35:00
关键提醒
一定要确保在写入日期值之后设置格式,或者在赋值前先设置格式也可以——只要保证单元格最终应用了日期格式规则,Excel就会自动把序列号转换成可读的日期样式。
内容的提问来源于stack exchange,提问作者Srinidhi Bhandary
相关产品推荐
相关产品推荐

