EasyPOI 的基本使用

  • 引入jar
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
  • 创建excel实体类
@Data
public class TestExcelDO implements Serializable {
/**
* name 指定导出excel是生成的列名
* orderNum可指定导出的该属性对应的所在列的位置
* width设置单元格宽度
* type设置导出类型 1是文本 2是图片 3是函数 10数字 默认是文本
*/
@Excel(name = "序号", orderNum = "1", type = 1, width = 15)
private String xh;
@Excel(name = "资格证号市", orderNum = "2", type = 1, width = 20)
private String zgzh;
@Excel(name = "驾驶员姓名", orderNum = "3", type = 1, width = 15)
private String xm;
@Excel(name = "驾驶员性别", orderNum = "4", type = 1, width = 15)
private String xb;
@Excel(name = "车牌号", orderNum = "5", type = 1, width = 20)
private String cph;
@Excel(name = "身份证号", orderNum = "6", type = 1, width = 30)
private String sfzh;
@Excel(name = "打印时间", orderNum = "7", type = 1, width = 20)
private String dysj;
@Excel(name = "地区", orderNum = "8", type = 1, width = 20)
private String dq;

public String getXh() {
return xh;
}

public void setXh(String xh) {
this.xh = xh;
}

public String getZgzh() {
return zgzh;
}

public void setZgzh(String zgzh) {
this.zgzh = zgzh;
}

public String getXm() {
return xm;
}

public void setXm(String xm) {
this.xm = xm;
}

public String getXb() {
return xb;
}

public void setXb(String xb) {
this.xb = xb;
}

public String getCph() {
return cph;
}

public void setCph(String cph) {
this.cph = cph;
}

public String getSfzh() {
return sfzh;
}

public void setSfzh(String sfzh) {
this.sfzh = sfzh;
}

public String getDysj() {
return dysj;
}

public void setDysj(String dysj) {
this.dysj = dysj;
}

public String getDq() {
return dq;
}

public void setDq(String dq) {
this.dq = dq;
}
}
  • 导出
        ExportParams params = new ExportParams(sheetName, sheetName);
params.setSecondTitle("导出时间:" + format.format(new Date()));
List<Map> finalCdklist = listData;
int talpage = (finalCdklist.size() / 10000) + 1;
Workbook workbook = ExcelExportUtil.exportBigExcel(params, TestExcelDO.class, new IExcelExportServer() {
@Override
public List<Object> selectListForExcelExport(Object obj, int page) {
List<Object> list = new ArrayList<Object>();
//TODO 自己的逻辑代码,返回列表List
return list;
}
}, talpage);
  • 修改样式
params.setStyle(EasyPOIExcelStyleUtil.class);
public class EasyPOIExcelStyleUtil implements IExcelExportStyler {

private static final short STRING_FORMAT = (short) BuiltinFormats.getBuiltinFormat("TEXT");

private static final short FONT_SIZE_TEN = 10;

private static final short FONT_SIZE_ELEVEN = 11;

private static final short FONT_SIZE_TWELVE = 12;

/**
* 大标题样式
*/
private CellStyle headerStyle;

/**
* 每列标题样式
*/
private CellStyle titleStyle;

/**
* 数据行样式
*/
private CellStyle styles;

public void ExcelStyleUtil(Workbook workbook) {
this.init(workbook);
}

/**
* 初始化样式
*
* @param workbook
*/
private void init(Workbook workbook) {
this.headerStyle = initHeaderStyle(workbook);
this.titleStyle = initTitleStyle(workbook);
this.styles = initStyles(workbook);
}

/**
* 大标题样式
*
* @param color
* @return
*/
@Override
public CellStyle getHeaderStyle(short color) {
return headerStyle;
}

/**
* 每列标题样式
*
* @param color
* @return
*/
@Override
public CellStyle getTitleStyle(short color) {
return titleStyle;
}

/**
* 数据行样式
*
* @param parity 可以用来表示奇偶行
* @param entity 数据内容
* @return 样式
*/
@Override
public CellStyle getStyles(boolean parity, ExcelExportEntity entity) {
return styles;
}

/**
* 获取样式方法
*
* @param dataRow 数据行
* @param obj 对象
* @param data 数据
*/
@Override
public CellStyle getStyles(Cell cell, int dataRow, ExcelExportEntity entity, Object obj, Object data) {
return getStyles(true, entity);

}

/**
* 模板使用的样式设置
*/
@Override
public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {
return null;

}

/**
* 初始化--大标题样式
*
* @param workbook
* @return
*/

private CellStyle initHeaderStyle(Workbook workbook) {
CellStyle style = getBaseCellStyle(workbook);
style.setFont(getFont(workbook, FONT_SIZE_TWELVE, true));
return style;
}

/**
* 初始化--每列标题样式
*
* @param workbook
* @return
*/

private CellStyle initTitleStyle(Workbook workbook) {
CellStyle style = getBaseCellStyle(workbook);
style.setFont(getFont(workbook, FONT_SIZE_ELEVEN, false));
//背景色
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
return style;
}

/**
* 初始化--数据行样式
*
* @param workbook
* @return
*/

private CellStyle initStyles(Workbook workbook) {
CellStyle style = getBaseCellStyle(workbook);
style.setFont(getFont(workbook, FONT_SIZE_TEN, false));
style.setDataFormat(STRING_FORMAT);
return style;
}

/**
* 基础样式
*
* @return
*/

private CellStyle getBaseCellStyle(Workbook workbook) {
CellStyle style = workbook.createCellStyle();
//下边框
style.setBorderBottom(BorderStyle.THIN);
//左边框
style.setBorderLeft(BorderStyle.THIN);
//上边框
style.setBorderTop(BorderStyle.THIN);
//右边框
style.setBorderRight(BorderStyle.THIN);
//水平居中
style.setAlignment(HorizontalAlignment.CENTER);
//上下居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
//设置自动换行
style.setWrapText(true);
return style;
}

/**
* 字体样式
*
* @param size 字体大小
* @param isBold 是否加粗
* @return
*/
private Font getFont(Workbook workbook, short size, boolean isBold) {
Font font = workbook.createFont();
//字体样式
font.setFontName("宋体");
//是否加粗
font.setBold(isBold);
//字体大小
font.setFontHeightInPoints(size);
return font;
}

}
posted @   mrlee623  阅读(1274)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示