Multiple Styles to Excel Cell POI

前端 未结 2 1493
迷失自我
迷失自我 2020-12-19 02:20

I want to apply colour to cell as well as Format Cell value(e.g. Date,Amount).But when I am applying two Cell Style only the last style is gets applied on cell.



        
2条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-19 03:07

    You can create a map of styles and then you can use different styles throughout the java program.

    For example

    Map cellStyles = new HashMap();
    DataFormat dataFormat = workbook.createDataFormat();
    
    XSSFCellStyle cellStyle;
    XSSFFont font;
    
    cellStyle = workbook.createCellStyle();
    
    cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
    cellStyle.setAlignment(cellStyle.ALIGN_CENTER_SELECTION);   
    font = workbook.createFont();
    font.setFontHeightInPoints((short)16);
    font.setFontName("Calibri");                                            
    cellStyle.setFont(font);
    cellStyles.put("header_cell_style", cellStyle);
    
    cellStyle = workbook.createCellStyle(); 
    cellStyle.setAlignment(cellStyle.ALIGN_CENTER_SELECTION);
    font = workbook.createFont();
    font.setFontHeightInPoints((short)12);
    font.setFontName("Calibri");                   
    cellStyle.setFont(font);
    cellStyles.put("normal_cell_style", cellStyle);
    
    cellStyle = workbook.createCellStyle();
    cellStyle.setAlignment(cellStyle.ALIGN_CENTER_SELECTION);       
    cellStyle.setDataFormat(dataFormat.getFormat("dd-mmm-yyyy"));
    font = workbook.createFont();
    font.setFontHeightInPoints((short)12);
    font.setFontName("Calibri");                   
    cellStyle.setFont(font);
    cellStyles.put("date_cell_style", cellStyle);
    
    cellStyle = workbook.createCellStyle();
    cellStyle.setAlignment(cellStyle.ALIGN_CENTER_SELECTION);       
    cellStyle.setDataFormat(dataFormat.getFormat("dd-mmm-yyyy"));
    font = workbook.createFont();
    font.setFontHeightInPoints((short)16);
    font.setFontName("Calibri");                   
    cellStyle.setFont(font);
    cellStyles.put("header_date_cell_style", cellStyle);
    
    return cellStyles;       
    

    and then use this map like

    Map multipleCellStyles = createMultipleExcelCellStyles(workbook);
    
    headerCellD1.setCellStyle(multipleCellStyles.get("header_cell_style"));
    
    cellB.setCellStyle(multipleCellStyles.get("normal_cell_style"));
    
    cellC.setCellStyle(multipleCellStyles.get("date_cell_style"));
    

提交回复
热议问题