2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 用NPOI操作EXCEL-NPOI计算公式-通过NPOI获得公式的返回值

用NPOI操作EXCEL-NPOI计算公式-通过NPOI获得公式的返回值

时间:2021-04-23 18:13:47

相关推荐

用NPOI操作EXCEL-NPOI计算公式-通过NPOI获得公式的返回值

一、获取模板文件中公式的返回值

如在D盘中有一个名为text.xls的Excel文件,其内容如下:

注意C1单元格中设置的是公式“ A 1 ∗ A1* 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);

运行结果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。