31

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

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"));

}
4

4 に答える 4

50

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

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

于 2008-11-26T06:33:11.180 に答える
26

少なくとも Excel 2010 の場合: Excel に移動します。セルを好きなようにフォーマットします。

ここに画像の説明を入力

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

ここに画像の説明を入力

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

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

例:

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

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

于 2014-12-03T17:26:07.897 に答える
6

上記の返信を更新するだけです。短い '8' はうまくいきませんが、'7' はうまくいきます。

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

O/P は $416.00 です

于 2012-03-28T12:33:15.307 に答える
3

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

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));
于 2015-02-09T16:37:02.763 に答える