私は、Java 1.6でapache poi 3.12でHSSFWorkbookを使用して、xlsファイルをタブ区切りのテキストファイルに変換しています。私processRecord方法では、私は次のコードでは、NumberRecord、NUMRECにFormatTrackingHSSFListenerを使用して数値フィールドから値を取得:Apache POI Java 6から8への相違
String value = formatListener.getFormatString(numrec);
は、これは21.9のように、値をとり、かつ最も近い整数に丸め。私の問題は、Java 1.8を実行している新しいサーバに変更したときに値が切り捨てられる代わりに切り捨てられて21.9が22ではなく21になるということです。私はApacheのpoiドキュメントを見てきましたが、次の質問への回答を求めています:
- なぜこれが起こりますか? (最も重要ではない)
- 値を取得してJava 1.8で切り捨てるのではなく丸めますか?
- 丸めや切り捨てなしで元の形式で値を取得する方法はありますか?
は、私はすでにXLSファイルから値を取得する別の方法を試してみた:
String value = new DataFormatter().formatCellValue(cell);
が、私は同じ動作を取得します。
Apache POIの最新バージョン(現在3.17)をお試しになるとどうなりますか? – Gagravarr
おそらくあなたはすでにチェックしていますが、numrec値がJavaバージョン間で常に同じであることを確認できますか?あなたは単体テストケースを書くことができます。 – Anon
最新のpoi(3.17)に更新すると、仕事をしました、ありがとう皆 – user3813942