web-dev-qa-db-ja.com

Apache poiを使用してExcelセルに常に2つの小数点を表示する

例えば、

XSSFCellStyle style=(XSSFCellStyle) workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("#.##"));

productCell.setCellValue(12.4);
productCell.setCellType(Cell.CELL_TYPE_NUMERIC);
productCell.setCellStyle(style);

指定したセルに12.4が表示されます。 12.40である必要があります。値1212.として表示されますが、これはまったく不要です。

値が0の場合、ドット.が表示されます。この場合、セルに格納されている値に関係なく、常に2桁の10進数-0.00が表示されます。

数値セルに常に2桁の10進数を表示するようにExcelを強制する方法は?


数値セルを表示するには、次のいずれかのスタイルを使用します。

XSSFColor commonColor = new XSSFColor(new Java.awt.Color(240, 240, 240));
XSSFColor cellBorderColour = new XSSFColor(new Java.awt.Color(0, 76, 153));

Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setColor(IndexedColors.DARK_BLUE.index);

XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle();
style.setFillForegroundColor(commonColor);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(font);

style.setBorderLeft(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.LEFT, cellBorderColour);
style.setBorderTop(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.TOP, cellBorderColour);
style.setBorderRight(BorderStyle.HAIR);
style.setBorderColor(XSSFCellBorder.BorderSide.RIGHT, cellBorderColour);
style.setBorderBottom(BorderStyle.DOUBLE);
style.setBottomBorderColor(cellBorderColour);

数値セルに数値フォーマット(切り上げ)を適用した後に実行されることが予想される数値セルに対していくつかの計算を実行するために、いくつかのExcel式を適用しました。

12
Tiny

Excelのフォーマットでは、#は「必要な場合にのみここに数字を配置する」ことを意味しますが、0は「不要な0であっても常に数字をここに配置する」ことを意味します。 Apache POIのデータ形式 を正確に指定できます Excelの場合と同様0桁を表示したい場合は、0sをフォーマット桁として使用する必要があります。試す

style.setDataFormat(workbook.createDataFormat().getFormat("0.00"));

これにより、値00.00として表示され、12.412.40として表示されます。

35
rgettman

これは私のために働きました:

  1. セルスタイルを設定

    private CellStyle formatDecimalStyle(Workbook workbook, CreationHelper createHelper) {  
        CellStyle style = workbook.createCellStyle();
        style.setDataFormat(createHelper.createDataFormat().getFormat("0.00"));
        return style;   
    }
    
  2. セルにスタイルを適用

    CellStyle style = formatDecimalStyle(workbook, createHelper);
    Cell creditAmountCell = row.createCell(3);
    creditAmountCell.setCellValue(amount);
    creditAmountCell.setCellStyle(style);
    
0
Elm