后端开发
C#使用NPOI导入Excel表格时单元格公式不计算的解决办法
发布时间:2024-04-01 22:45:10 浏览量:70
现在用NPOI来读取EXCEL表格越用越多,学习总结了问题(NPOI版本V2.5.1):
1、NPOI导入EXCEL表格后,表格中一些列是公式的,需要获取公式计算后的数值结果
网上很多方法都是模糊不清楚的,翻看官方给出的也是设置了很多障碍,最后通过比较不同作者代码,发现官方代码有这么一句:
case HSSFCellType.FORMULA:
default:
dr[i] = "="+cell.CellFormula;
break;
这个“FORMULA”就是循环列,如果存在含公式的列,然后怎么赋值,这样就好办了,我们的代码就可以写成如下:
switch (cell.CellType)
{
case CellType.Blank:
dataRow[j] = "";
break;
case CellType.Numeric:
short format = cell.CellStyle.DataFormat; //对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理
if (format == 14 || format == 31 || format == 57 || format == 58)
dataRow[j] = cell.DateCellValue;
else
dataRow[j] = cell.NumericCellValue;
break;
case CellType.String:
dataRow[j] = cell.StringCellValue;
break;
case CellType.Formula: //判断单元格格式类型,如果是公式类型,就获取数值型的数据
dataRow[j] = cell.NumericCellValue; //单元格计算公式获取数值类型的值
break;
}
通过判断CellType.Formula,这样datatable就可以获取公式计算后的数据了!
C#使用NPOI导入Excel表格时单元格公式不计算的解决办法就完成了!