在一个封装的Excel操作类,遍历的时候需要判断某个单元格是否有错。因为可能这个单元格是配置计算公式的,在公式参数为空时,提示错误是正常的。因此,如果提示单元格有错,应该跳过,而不应该继续取这个单元格值。
有Cell类中,简单地增加一个只读属性字段来实现些功能。
dynamic _cell = null; public dynamic Cell { get { return _cell; } set { if (value != null) _cell = value; } } /// <summary> /// 检查当前单元格是否有错 /// </summary> public bool HasError { get { var errors = new List<string>{"#DIV/0!","#N/A","#NAME?","#NULL!","#NUM!","#RRF!","#VALUE!"} ; if (errors.Any(i => i == _cell.Text.ToString().ToUpper())) { return true; } else { return false; } } }
使用时:
//遍历当前的Range for (int j = 2; j <= range.RowsCount; j++) { for (int k = 1; k <= range.ColumnsCount; k++) { var cell = workSheet.GetCell(j, k); if (cell.HasError) { continue; } var cellValue = cell.Value; //......................... } }