2016-11-23 44 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によって自動的に行われるのではなく、重い操作であり、しばしば必要ではないためです。

は基本的にあなたがFormulaEvaluatorを作成し、質問にあなたの答えのための

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

おかげ電池用CellValueを取得し、詳細についてはhttp://poi.apache.org/spreadsheet/eval.htmlを参照してください。あなたのソリューションを適用すると、私は実際にはセルの値(私の場合は「2.0」)を取得しますが、Excel(「2」)では表示されません。 'dataFormatter.formatCellValue(evaluator.evaluateInCell(cell)) ' –

+0

はい、フォーマットは評価者によって行われないため、2番目のステップでは、他のフォーマットと同じ方法で行いますdataFormatterを使用してセルの内容を取得します。 – centic

関連する問題