web-dev-qa-db-ja.com

Apache POIを使用した基本的なExcel通貨形式

セルを日付としてフォーマットすることはできますが、セルを通貨としてフォーマットすることができません...これを機能させるためのスタイルを作成する方法の例は誰にもありますか?以下のコードは、作成しているスタイルを示しています。styleCurrencyFormatはセルに影響を与えませんが、styleDateFormatはチャンピオンのように機能します。

private HSSFWorkbook wb;
private HSSFCellStyle styleDateFormat = null;
private HSSFCellStyle styleCurrencyFormat = null;

…….

public CouponicsReportBean(){
    wb = new HSSFWorkbook();
    InitializeFonts();

}

public void InitializeFonts()
{
    styleDateFormat = wb.createCellStyle();
    styleDateFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));


    styleCurrencyFormat = wb.createCellStyle();
    styleCurrencyFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("$#,##0.00"));

}
27
Dave K

ドキュメントをもう少し掘り下げた後、私は答えを見つけました:

http://poi.Apache.org/apidocs/org/Apache/poi/hssf/usermodel/HSSFDataFormat.html

適切な事前設定フォーマットを見つけてコードを提供するだけです。

    styleCurrencyFormat.setDataFormat((short)8); //8 = "($#,##0.00_);[Red]($#,##0.00)"

その他の例を次に示します。 http://www.roseindia.net/Java/poi/setDataFormat.shtml

40
Dave K

少なくともExcel 2010の場合:Excelに移動します。セルを希望どおりにフォーマットします。

enter image description here

次に、フォーマットダイアログに戻ります。カスタムを選択します。

enter image description here

Type:intoの一番上の行にあるテキストをコピーして貼り付けます。

createHelper.createDataFormat().getFormat("<here>");

例:

createHelper.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"); //is the "Accounting" format.

必ずdoubleを使用してセルにデータを設定してください。インデックスを使用すると、Excelの異なるバージョンで問題が発生する可能性があります。上記で作成した新しいフォーマットは、ステップ2のカスタムダイアログで終わることに注意してください。

16
Andrew

上記の返信に対する更新のみ。短い「8」は機能しませんが、「7」は機能します。

cell.setCellValue(416.17);      
cellStyle.setDataFormat((short)7);
cell.setCellStyle(cellStyle);

O/Pは$ 416.00

6
user1073214

このコードを試して、通貨モードでセルをフォーマットすることができます(ブラジルやドイツで使用されるような1000の区切り文字を使用。例:12.345,67):

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));
3
dellasavia