NPOI 1.2.4教程 – 2.3.9 获得公式的返回值
一、获取模板文件中公式的返回值
如在D盘中有一个名为text.xls的Excel文件,其内容如下:
注意C1单元格中设置的是公式“$A1*$B1”,而不是值“12”。利用NPOI,只需要写简单的几句代码就可以取得此公式的返回值:
如在D盘中有一个名为text.xls的Excel文件,其内容如下:
注意C1单元格中设置的是公式“$A1*$B1”,而不是值“12”。利用NPOI,只需要写简单的几句代码就可以取得此公式的返回值:
1 2 3 | IWorkbook wb = new HSSFWorkbook(new FileStream("d:/test.xls",FileMode.Open)); ICell cell = wb.GetSheet("Sheet1").GetRow(0).GetCell(2); System.Console.WriteLine(cell.NumericCellValue); |
输出结果为:
可见NPOI成功的“解析”了此.xls文件中的公式。注意NumericCellValue属性会自动根据单元格的类型处理,如果为空将返0,如果为数值将返回数值,如果为公式将返回公式计算后的结果。单元格的类型可以通过CellType属性获取。
二、获取NPOI生成的Excel文件中公式的返回值
上例中是从一个已经存在的Excel文件中获取公式的返回值,那么如果Excel文件是通过NPOI创建的,直接用上面的方法获取,可能得不到想要的结果。如:
IWorkbook hssfworkbook = new HSSFWorkbook();
ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
IRow row = sheet1.CreateRow(0);
row.CreateCell(0).SetCellValue(3);
row.CreateCell(1).SetCellValue(4);
ICell cell = row.CreateCell(2);
cell.CellFormula = "$A1+$B1";
System.Console.WriteLine(cell.NumericCellValue);
执行上面代码,将输出结果“0”,而不是我们想要的结果“7”。那么将如何解决呢?这时要用到HSSFFormulaEvaluator类。在第8行后加上这两句就可以了:
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook);
cell = e.EvaluateInCell(cell);
运行结果如下:
分类: NPOI 标签: NPOI, xls, 公式
NPOI 1.2.4教程 – 2.3.8 RAND函数
2012年1月6日 zhll912 没有评论
作者:aTao.Xiang
我们知道,在大多数编程语言中都有随机数函数。在Excel中,同样存在着这样一个函数—RAND()函数,用于生成随机数。先来看一个最简单的例子:
1 2 | ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); sheet1.CreateRow(0).CreateCell(0).SetCellFormula("RAND()"); |
RAND()函数将返回一个0-1之间的随机数,执行后生成的Excel文件如下:
这只是最简单直接的writeline教程RAND()函数的应用,只要我们稍加修改,就可以作出很多种变换。如
取0-100之前的随机整数,可设置公式为:
sheet1.CreateRow(0).CreateCell(0).SetCellFormula("int(RAND()*100)");
取10-20之间的随机实数,可设置公式为:
sheet1.CreateRow(0).CreateCell(0).SetCellFormula("rand()*(20-10)+10");
随机小写字母:
sheet1.CreateRow(0).CreateCell(0).SetCellFormula("CHAR(INT(RAND()*26)+97)");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论