JXLS生成excel並自定義單元格樣式

   本人最近須要天天統計數據表,並每週一發送統計結果的郵件,因此寫了個springboot老自動完成工做。項目地址爲:https://github.com/707293891/springbootjava

   其中某些統計數據須要特殊標記:紅色顯示。git

   如圖:模版以下github

   可是須要在某一處特殊顯示爲紅色:如圖spring

   

 

     如今寫出實現過程:apache

   利用jxls的區域監聽器實現.springboot

    

Transformer transformer = TransformerFactory.createTransformer(getFileInputStream(), new FileOutputStream( new File( Thread.currentThread().getContextClassLoader(). getResource("excelTemplates/result").getFile()+"/result.xls"))); XlsArea xlsArea=new XlsArea("Sheet1!A1:F3",transformer); XlsArea employeeArea = new XlsArea("Sheet1!A3:F3", transformer); employeeArea.addAreaListener(new SimpleAreaListener(employeeArea)); EachCommand eachCommand=new EachCommand("item","items",employeeArea); xlsArea.addCommand("A3:F3", eachCommand); Context context = new Context(); Map map=new HashMap(); // map.put("list",getData());
        map.put("week",CalendarUtil.getWeekNum()); map.put("month",CalendarUtil.getMonth()); context.putVar("print", map); context.putVar("items",list); xlsArea.applyAt(new CellRef("Sheet1!A1"), context); transformer.write();
  SimpleAreaListener實現以下:
  
package com.yinhai.yunwei.excel; import com.yinhai.yunwei.yunwei.mapper.YunweiInfo; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFFont; import org.jxls.area.Area; import org.jxls.area.XlsArea; import org.jxls.common.AreaListener; import org.jxls.common.CellRef; import org.jxls.common.Context; import org.jxls.transform.poi.PoiTransformer; import java.util.Map; /** * @author 範超 * @version V1.0 * @Title SimpleAreaListener * @Package jxls * @Descript :TODO() * @date : 2018/6/25 上午10:22 */
public class SimpleAreaListener implements AreaListener { private Area area; PoiTransformer transformer; public SimpleAreaListener(XlsArea xlsArea) { this.area=xlsArea; transformer= (PoiTransformer) xlsArea.getTransformer(); } @Override public void beforeApplyAtCell(CellRef cellRef, Context context) { } @Override public void afterApplyAtCell(CellRef cellRef, Context context) { } @Override public void beforeTransformCell(CellRef cellRef, CellRef cellRef1, Context context) { } @Override public void afterTransformCell(CellRef cellRef, CellRef cellRef1, Context context) { if (cellRef1.getCol()!=3&&cellRef1.getCol()!=5){ return; } Workbook workbook=transformer.getWorkbook(); Cell cell=workbook.getSheet(cellRef1.getSheetName()).getRow(cellRef1.getRow()).getCell(cellRef1.getCol()); CellStyle cellStyle=cell.getCellStyle(); Font font=workbook.createFont(); CellStyle resultCell=workbook.createCellStyle(); Object item=context.getVar("item"); //須要顯示紅色的條件
        if(item!=null&&item instanceof YunweiInfo &&"****".equals(((YunweiInfo) item).getName())){ font.setColor(XSSFFont.COLOR_RED); resultCell.setFont(font); cell.setCellStyle(resultCell); } } }

    這樣當知足條件時就會實現特殊的顯示格式了。app

    其中jxls版本爲以下xss

    

<dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls</artifactId>
            <version>[2.4.3,)</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>[1.0.14,)</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-jexcel</artifactId>
            <version>[1.0.6,)</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-reader</artifactId>
            <version>[2.0.3,)</version>
        </dependency>
相關文章
相關標籤/搜索