1.日期型的公式
2.字串組合變化公式
3.純數值(儲存格數值)加總等公式
4.其他(還沒想到)
ps.NPOI版本為2.0
NPOI讀取公式類型的儲存格,其依以上不同而有不同的寫法
//每一格儲存格的資料類型為公式
//EX:Date('2010','4','1')、Sum($A1,$A2)、$A1 & $A2
if(hssfRow.GetCell(k).CellType==CellType.FORMULA)
{
//由NPOI內提供的類別庫判斷公式結果類型
IFormulaEvaluator iFormula = WorkbookFactory.CreateFormulaEvaluator(workbook);
var formulaType = iFormula.Evaluate(hssfRow.GetCell(k)).CellType;
//結果類型為數值(日期結果會被轉為數值)
if (formulaType == CellType.NUMERIC)
{
ICell cell = iFormula.EvaluateInCell((hssfRow.GetCell(k)));
// 判斷是否日期
if (DateUtil.IsCellDateFormatted(cell))
dr[k] = hssfRow.GetCell(k).DateCellValue;
else
dr[k] = hssfRow.GetCell(k).NumericCellValue;
}
//字串公式
else if (formulaType == CellType.STRING)
dr[k] = hssfRow.GetCell(k).StringCellValue;
else
dr[k] = hssfRow.GetCell(k).ToString();
}
參考資訊:
http://www.dotblogs.com.tw/smartleos/archive/2010/10/11/18284.aspx
http://tonyqus.sinaapp.com/archives/tag/excel-2007