EasyPoi自定义单元格样式

-EasyPoi支持对导出的Excel表格添加各种样式,比如更改字体,左对齐,靠上对齐,背景色,边框等效果,我这里以左对齐和靠上对齐样式做演示。

EasyPoi默认导出的单元格格式为上下居中,左右居中的样式,而这种效果是因为有ExcelExportStylerDefaultImpl对表格进行了默认的样式定义。这个类是接口IExcelExportStyler的实现类,继承自AbstractExcelExportStyler类,我们只需要写一个类似的样式类,里面就可以按照我们需要的样式定义了。

上面提到的每个类,以及点击链接去同性交友网站自行查看,我就不贴图了。需要注意的是IExcelExportStyler这个接口里的方法,里面有5个方法,如果发现写的效果没有生效,那可能是需要写在另一个方法里,比如标题的样式,如果你写在getStyles()方法里没作用的,正确是在getTitleStyle()方法里。

创建样式类

import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams;
import cn.afterturn.easypoi.excel.export.styler.AbstractExcelExportStyler;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.ss.usermodel.*;

/**
 * @author Chunping.Liao
 * @Date 2020年03月18日 17:33:32
 */
public class MyExcelExportStylerImpl extends AbstractExcelExportStyler implements IExcelExportStyler {

    public MyExcelExportStylerImpl(Workbook workbook) {
        super.createStyles(workbook);
    }

    @Override
    public CellStyle getHeaderStyle(short headerColor) {
        return null;
    }

    @Override
    public CellStyle getTitleStyle(short color) {
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(true);
        // 标题靠上对齐
        cellStyle.setVerticalAlignment(VerticalAlignment.TOP);
        return cellStyle;
    }

    @Override
    public CellStyle getStyles(boolean parity, ExcelExportEntity entity) {
      return getStyles(null, 0, null, null, null);
    }

    @Override
    public CellStyle getStyles(Cell cell, int dataRow, ExcelExportEntity entity, Object obj, Object data) {
        CellStyle cellStyle = workbook.createCellStyle();
        // 左对齐
        cellStyle.setAlignment(HorizontalAlignment.LEFT);
        // 靠上对齐
        cellStyle.setVerticalAlignment(VerticalAlignment.TOP);
        cellStyle.setWrapText(true);
        return cellStyle;
    }

    @Override
    public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {
        return null;
    }
}

测试类

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author ChunPing.Liao
 * @Date 2020年03月18日 14:50:48
 */
public class ExportPoi {

    public static void main(String[] args) throws IOException {

        List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
        entity.add(new ExcelExportEntity("标题1", "colNum1", 40));
        entity.add(new ExcelExportEntity("标题2", "colNum2", 20));
        entity.add(new ExcelExportEntity("标题3", "colNum3", 13));
        entity.add(new ExcelExportEntity("标题4", "colNum4", 15));

        List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
        Map<String, Object> map = new HashMap<>();
        map.put("colNum1", "商品名称");
        map.put("colNum2", "商品型号");
        map.put("colNum3", "购买数量");
        map.put("colNum4", "单价");
        dataList.add(map);
        map = new HashMap<>();
        map.put("colNum1", "");
        map = new HashMap<>();
        map.put("colNum3", "订单总额:");
        dataList.add(map);

        map = new HashMap<>();
        map.put("colNum3", "支付金额:");
        dataList.add(map);

        ExportParams ex = new ExportParams(null, "订单详情");
        // 设置自定义样式类
        ex.setStyle(MyExcelExportStylerImpl.class);
        Workbook workbook = ExcelExportUtil.exportExcel(ex, entity, dataList);

        File file = new File("D:" + File.separator + "1.xls");
        workbook.write(new FileOutputStream(file));

    }

}

最终效果图为

EasyPoi自定义单元格样式_第1张图片

欢迎访问我的个人博客

烛火博客

你可能感兴趣的:(Java)