2016-11-23 126 views
0

我嘗試從單元格中讀取值作爲字符串(就像在Excel中看到的那樣)。我使用Apache POI 3.15從xlsx(XSSFWorkbook)中讀取數據。在Apache POI中讀取公式單元格的結果3.15

我的目標是如果單元格包含整數,則省略小數點和尾隨零。這適用於CellType.NUMERIC

val dataFormatter = new DataFormatter(true) // set emulateCsv to true 
val stringValue = dataFormatter.formatCellValue(cell) 

如果我使用相同的代碼爲CellType.FORMULA細胞(例如,它引用另一個「整數」單元的單元),它只是給我的公式作爲一個字符串,而不是它的計算值。

如何獲取Excel顯示中所顯示的公式單元格的值?

回答

0

您需要「評估」單元格以獲得公式的結果。這不是由POI自動完成的,因爲它可能是一項繁重的操作,往往不是必需的。

詳見http://poi.apache.org/spreadsheet/eval.html,基本上你創建一個FormulaEvaluator和檢索,小區A CellValue問題

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); 
... 
CellValue cellValue = evaluator.evaluate(cell); 
+0

謝謝您的回答。如果我應用你的解決方案,我實際上得到的單元格值(在我的情況下「2.0」),但不是顯示在Excel(「2」)。爲了得到所需的輸出,我需要將其更改爲:'dataFormatter.formatCellValue(evaluateator.evaluateInCell(cell))' –

+0

是的,格式化不是由評估者完成的,因此在第二步中完成格式化與格式化其他格式與dataFormatter的單元格內容。 – centic

相關問題