zoukankan      html  css  js  c++  java
  • 2.3.9 用NPOI操作EXCEL--通过NPOI获得公式的返回值

    前面我们学习了通过NPOI向Excel中设置公式,那么有些读者可能会问:“NPOI能不能获取公式的返回值呢?”,答案是可以!
    一、获取模板文件中公式的返回值
    如在D盘中有一个名为text.xls的Excel文件,其内容如下:

    注意C1单元格中设置的是公式“$A1*$B1”,而不是值“12”。利用NPOI,只需要写简单的几句代码就可以取得此公式的返回值:

    HSSFWorkbook wb = new HSSFWorkbook(new FileStream("d:/test.xls",FileMode.Open));
    HSSFCell cell = wb.GetSheet("Sheet1").GetRow(0).GetCell(2);
    System.Console.WriteLine(cell.NumericCellValue);

    输出结果为:

    可见NPOI成功的“解析”了此.xls文件中的公式。注意NumericCellValue属性会自动根据单元格的类型处理,如果为空将返0,如果为数值将返回数值,如果为公式将返回公式计算后的结果。单元格的类型可以通过CellType属性获取。

    二、获取NPOI生成的Excel文件中公式的返回值
          上例中是从一个已经存在的Excel文件中获取公式的返回值,那么如果Excel文件是通过NPOI创建的,直接用上面的方法获取,可能得不到想要的结果。如:

    1 HSSFWorkbook hssfworkbook = new HSSFWorkbook();
    2 HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
    3 HSSFRow row = sheet1.CreateRow(0);
    4 row.CreateCell(0).SetCellValue(3);
    5 row.CreateCell(1).SetCellValue(4);
    6 HSSFCell cell = row.CreateCell(2);

    8 cell.SetCellFormula("$A1+$B1");
    9 System.Console.WriteLine(cell.NumericCellValue);

          执行上面代码,将输出结果“0”,而不是我们想要的结果“7”。那么将如何解决呢?这时要用到HSSFFormulaEvaluator类。在第8行后加上这两句就可以了:

    HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook);
    cell = e.EvaluateInCell(cell);

    运行结果如下:

    转载原文:http://www.cnblogs.com/atao/archive/2009/10/12/1582085.html

  • 相关阅读:
    GRUB引导Win8,Win7,Ubuntu
    The vim syntax of systemd unit file
    Win8蓝屏(WHEA_UNCORRECTABLE_ERROR)
    C#生成Excel
    IE中使用IFrame或Frameset导致session丢失的问题
    Apache 配置详解 ( 最好的 APACHE 配置教程 )
    关于(enctype="multipart/formdata") post 提交时中文乱码解决方案(使用jspsmartupload时)
    Java获取当前时间
    windows中定时操作(SetTimer函数用法)
    _RecordsetPtr的 open函数
  • 原文地址:https://www.cnblogs.com/lizihong/p/4320065.html
Copyright © 2011-2022 走看看