honesome
@honesome (honesome)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Apache POI セルで表示している値の取得方法について

Q&A

Closed

解決したいこと

Apache POIを使用してExcelから数を取得する時、
そのセルで表示されている通りの値を取得したい

Apache POIはバージョン4.0.0を使用しております。

発生している問題

分かりにくいかもしれませんが下記のようなExcelを想定した時、

A B C
1 31,248.49 5,190.85 = A1/B1

C1のセルの書式を「数値」、小数点桁数を2に設定すると
表示上は6.02と表示されます。

しかし、当たり前ですが
POIのCell.getNumericCellValue()で取得すると「6.0199....」となり、
表示上の値で取得できません。

POIのAPIの中で表示上のCellの値を取得できるものはありますでしょうか?

自分で試したこと

Cのセルを=Round(A1/B1)に変更して、表示通りの値が取得できますが、

できればExcelを変更しないで、POIのAPIで対応できればと思っております。

0

3Answer

DataFormatter.createFormatを利用すれば、Cellに設定されているフォーマットがjava.text.Formatとして取得できるので、これを利用すればフォーマット適用後の値がStringとして取得できると思います。

DataFormatter formatter = new DataFormatter();
Format format = formatter.createFormat(c1);
String formattedCellValue = format.format(c1.getNumericCellValue());
System.out.println(formattedCellValue); //=> 6.02
1Like

Your answer might help someone💌