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

如何通过GetCellValue<eErrorType>或其他方法获取Excel错误单元格

解决EPPlus获取Excel错误单元格的问题

直接调用GetCellValue<eErrorType>()在非错误单元格上会触发异常,原因是该方法仅针对错误类型单元格设计,且eErrorType枚举未提供无错误的枚举值。以下是两种可行的解决思路:

方法一:通过单元格DataType判断

先筛选出DataType为eDataType.Error的单元格,再安全获取错误类型:

var worksheet = package.Workbook.Worksheets["a"];
// 筛选所有错误单元格并获取错误类型
var badCells = worksheet.Cells
    .Where(cell => cell.DataType == eDataType.Error)
    .Select(cell => new 
    {
        CellLocation = cell.Address,
        ErrorType = cell.GetCellValue<eErrorType>()
    });

方法二:通过Value类型匹配

利用模式匹配直接判断单元格值是否为ExcelErrorValue,同时获取错误信息:

var worksheet = package.Workbook.Worksheets["a"];
// 筛选特定错误类型(比如#DIV/0!)的单元格
var div0ErrorCells = worksheet.Cells
    .Where(cell => cell.Value is ExcelErrorValue error && error.Type == eErrorType.Div0);

// 筛选所有错误单元格
var allBadCells = worksheet.Cells
    .Where(cell => cell.Value is ExcelErrorValue)
    .Select(cell => new 
    {
        CellAddress = cell.Address,
        ErrorType = ((ExcelErrorValue)cell.Value).Type
    });

补充说明

  • 如果你只是需要判断单元格是否存在错误,无需获取具体错误类型,直接用cell.DataType == eDataType.Error或cell.Value is ExcelErrorValue即可。
  • 避免直接在所有单元格上调用GetCellValue<eErrorType>(),必须先做类型校验,否则会抛出类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33