セルを日付としてフォーマットすることはできますが、セルを通貨としてフォーマットすることができません...これを機能させるためのスタイルを作成する方法の例は誰にもありますか?以下のコードは、作成しているスタイルを示しています。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"));
}
ドキュメントをもう少し掘り下げた後、私は答えを見つけました:
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
少なくともExcel 2010の場合:Excelに移動します。セルを希望どおりにフォーマットします。
次に、フォーマットダイアログに戻ります。カスタムを選択します。
Type:intoの一番上の行にあるテキストをコピーして貼り付けます。
createHelper.createDataFormat().getFormat("<here>");
例:
createHelper.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"); //is the "Accounting" format.
必ずdoubleを使用してセルにデータを設定してください。インデックスを使用すると、Excelの異なるバージョンで問題が発生する可能性があります。上記で作成した新しいフォーマットは、ステップ2のカスタムダイアログで終わることに注意してください。
上記の返信に対する更新のみ。短い「8」は機能しませんが、「7」は機能します。
cell.setCellValue(416.17);
cellStyle.setDataFormat((short)7);
cell.setCellStyle(cellStyle);
O/Pは$ 416.00
このコードを試して、通貨モードでセルをフォーマットすることができます(ブラジルやドイツで使用されるような1000の区切り文字を使用。例:12.345,67):
HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));