编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

C#使用NPOI导入Excel表格时单元格公式不计算的解决办法

wxchong 2024-06-22 21:09:36 开源技术 9 ℃ 0 评论

现在用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表格时单元格公式不计算的解决办法就完成了!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表