6

ApachePOIを使用して数値をヨーロッパの通貨スタイルに変換しようとしています

HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#.###,#0"));

たとえば、2400と2.4の番号があります

私が欲しいのは2400,00と2,40です。しかし、POIは私に2400,0と2,40を与えます。に変更しようとすると

currencyCellStyle.setDataFormat(cf.getFormat("#.###,00"));

結果は2400,00と2,400になります。それも私が望んでいることではありません。

両方の値を正しく取得する可能性はありますか?

Thxとご挨拶

4

3 に答える 3

13

最後に、Gagravarrはこの質問を解決するための正しいヒントを提供しました。

最終的な解決策は次のとおりです。

HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#,##0.00\\ _€"));

手動でExcelファイルを作成した後に解決策が思い浮かびました。次に、Apache Poiで読み取り、フォーマット文字列を次のように抽出します。

 cell.getCellStyle().getDataFormatString() 

結果は#、## 0.00\_€</p>でした

そのため、この形式を上部のコードスニペットで使用しました。これにより、正しい結果が得られました。

どうも

于 2012-12-18T13:39:56.803 に答える
3

上記のアプローチの更新:必要な通貨フォーマットを使用してExcelファイルを手動で作成した後、フォーマット文字列を[カスタム]カテゴリ([セルのフォーマット]ダイアログ内)で取得できます。そうすれば、この文字列を取得するためにpoiを介してExcelを読み取る必要はありません。

于 2013-08-20T09:27:29.643 に答える
2

私の評判のためにコメントを書くことができません。ただし、3番目の数字ごとにドットが付いた整数€(例:24.000.123€)が必要な場合、パターンは次のようになります。

#,##0\ "€";\-#,##0\ "€"

したがって、フォーマットを設定します。

cell.getCellStyle().setDataFormat(cf.getFormat("#,##0\\ \"€\";\\-#,##0\\ \"€\""));

これがお役に立てば幸いです。

于 2019-05-09T13:37:02.533 に答える