用NPOI操作EXCEL-NPOI計算公式-通過NPOI獲得公式的返回值

一、獲取模板文件中公式的返回值
如在D盤中有一個名爲text.xls的Excel文件,其內容如下:

注意C1單元格中設置的是公式“A1A1*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);

運行結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章