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

使用LinqToExcel读取Excel日期始终得到01/01/0001的问题

解决Excel日期读取返回01/01/0001的问题

看起来你在使用强类型映射读取Excel日期时碰到了默认值的坑,这种情况我之前帮不少开发者排查过,主要集中在字段映射不匹配或者Excel数据格式异常这两个方向,给你几个具体的排查和修复步骤:

1. 确认实体类的字段映射是否准确

首先检查你的Réception_camions类,确保Date_d_arrivée字段和Excel列的对应关系完全正确:

  • 如果使用的是EPPlus这类库,记得给字段加上列名映射特性,要完全匹配Excel里的列名(包括空格、特殊字符):
    public class Réception_camions
    {
        [ExcelColumn(Name = "Date d'arrivée")] // 这里要和Excel列名完全一致
        public DateTime? Date_d_arrivée { get; set; }
        // 其他字段...
    }
    
  • 另外,字段类型用DateTime?(可空类型)比DateTime更合理,避免空值直接被解析成默认的01/01/0001。

2. 排查Excel文件的日期存储格式

打开你的Excel文件,选中Date d'arrivée列,右键查看单元格格式:

  • 如果格式是「文本」,Excel不会把它识别为日期类型,强类型映射自然无法解析,需要改成「日期」格式,保存后重新读取。
  • 如果已经是日期格式,还是读不对,建议筛选列检查是否存在空值、乱码或者无效日期(比如年份超出范围)的单元格。

3. 手动解析文本格式的日期(如果无法修改Excel)

如果业务上不能修改Excel的格式,那可以先把实体类的Date_d_arrivée改成string类型,然后在代码里手动解析:

foreach (var a in empDetails) {
    if (!string.IsNullOrEmpty(a.Date_d_arrivée)) {
        // 用法语区域解析,匹配Excel里的日期格式
        if (DateTime.TryParse(a.Date_d_arrivée, CultureInfo.GetCultureInfo("fr-FR"), DateTimeStyles.None, out DateTime date)) {
            TimeSpan heure = a.heure_d_arrivée;
            decimal poidsCam = a.Poids_cam;
            int idQualite = Convert.ToInt32(a.Id_qualité);
            int result = PostExcelData(date, heure, poidsCam, a.Id_cam, idQualite);
            // ...后续逻辑
        } else {
            // 解析失败时记录日志或跳过,避免影响其他数据
            Console.WriteLine($"无效日期:{a.Date_d_arrivée},跳过这条数据");
        }
    }
}

4. 检查Excel库的配置和版本

如果你用的是EPPlus,确保版本支持强类型映射,并且没有禁用日期解析的配置。初始化时可以指定日期格式,帮助库正确识别:

using (var package = new ExcelPackage(new FileInfo("你的文件路径"))) {
    var worksheet = package.Workbook.Worksheets[sheetName];
    // 设置单元格格式匹配Excel的日期格式
    worksheet.Cells.Style.Numberformat.Format = "dd/mm/yyyy";
    // 加载数据时确保强类型映射正常
    var empDetails = worksheet.Cells.LoadFromCollection<Réception_camions>();
    // ...后续逻辑
}

内容的提问来源于stack exchange,提问作者M.LOOK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:35:50