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;
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM