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

Flutter Web使用excel包读取7工作表Excel文件遇日期范围错误

解决Flutter Web中excel包读取特定Excel文件的日期范围错误

在Flutter Web应用中使用excel包读取一个包含7个工作表的特定Excel文件时,抛出错误:

DateTime is outside valid range: 9989518819130000

读取其他Excel文件时,以下代码可正常运行,但读取该特定文件时无法加载数据:

void pickAndProcessFile() async {
  try {
    FilePickerResult? result = await FilePicker.platform.pickFiles();

    if (result != null) {
      final List<int> bytes = result.files.single.bytes!;
      final excel = Excel.decodeBytes(bytes);
      var sheet1 = excel.tables.keys.elementAt(0);
      print(sheet1);
    }
  } catch (e, stackTrace) {
    print('Error decoding Excel file: $e');
    print(stackTrace);
  }
}

解决方法

  • 排查文件中的异常日期值:错误核心是文件内存在超出excel包支持范围的日期/时间数据。打开目标Excel文件,逐个工作表检查所有日期格式的单元格,确认是否存在极端日期(比如远超常规时间范围的数值)或被误设为日期格式的非日期内容。
  • 修正异常单元格:找到问题单元格后,要么将其格式改为文本(如果内容并非真实日期),要么修改为合法的日期值。
  • 替换解析包:若无法修改源文件,可尝试使用excelize、spreadsheet_decoder等其他Flutter Excel解析包,部分包对异常日期的兼容性更强。
  • 局部捕获日期异常:在解析流程中针对日期类型单元格单独捕获错误,避免整个文件解析失败。示例代码如下:
// 遍历单元格时处理日期异常
for (var table in excel.tables.values) {
  for (var row in table.rows) {
    for (var cell in row) {
      if (cell?.type == CellType.datetime) {
        try {
          var dateValue = cell?.value;
          // 正常处理日期逻辑
        } catch (dateError) {
          print("单元格日期解析失败: $dateError");
          // 跳过异常单元格或做标记处理
        }
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者Suraj Maurya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:14:51