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 );
7 
8  cell.SetCellFormula( " $A1+$B1 " );
9  System.Console.WriteLine(cell.NumericCellValue);
      执行上面代码,将输出结果“0”,而不是我们想要的结果“7”。那么将如何解决呢?这时要用到HSSFFormulaEvaluator类。在第8行后加上这两句就可以了:
HSSFFormulaEvaluator e  =   new  HSSFFormulaEvaluator(hssfworkbook);
cell 
=  e.EvaluateInCell(cell);
运行结果如下:

 

返回目录

 

转载于:https://www.cnblogs.com/atao/archive/2009/10/12/1582085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值