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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM