当前位置:网站首页>easypoi导出隔行样式设置
easypoi导出隔行样式设置
2022-07-28 05:29:00 【符华-】
导出excel需要设置隔行背景样式,如下图:
1、ExcelUtil 导出工具类
/** * 导出设置隔行背景色 * @param params * @param list * @param pojoClass * @param fileName * @param response */
public static void exportExcel( ExportParams params,List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
Workbook workbook = ExcelExportUtil.exportExcel(params,pojoClass,list);
if (workbook != null);
setRowBackground(workbook);
downLoadExcel(fileName, response, workbook);
}
/** * 偶数行设置背景色 */
private static void setRowBackground(Workbook workbook){
Sheet sheet = workbook.getSheetAt(0);
CellStyle styles = ExcelStyleUtil.getStyles(workbook,false,(short) 12);
for(int i = 0; i <= sheet.getLastRowNum(); i ++) {
Row row = sheet.getRow(i);
if (i%2==0 && i>0){
//标题用全局的标题样式,就不单独设置样式了,所以排除标题
for(int j = 0; j < row.getPhysicalNumberOfCells(); j ++) {
Cell cell = row.getCell(j);
cell.setCellStyle(styles);
}
}
}
}
/** * 下载 * @param fileName 文件名称 * @param response * @param workbook excel数据 */
public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + ExcelTypeEnum.XLS.getValue(), "UTF-8"));
workbook.write(response.getOutputStream());
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
2、ExcelStyleUtil 样式工具类
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import org.apache.poi.ss.usermodel.*;
public class ExcelStyleUtil implements IExcelExportStyler {
private static final short STRING_FORMAT = (short) BuiltinFormats.getBuiltinFormat("TEXT");
private static final short FONT_SIZE_TEN = 12;
private static final short FONT_SIZE_ELEVEN = 14;
private static final short FONT_SIZE_TWELVE = 18;
/** * 大标题样式 */
private CellStyle headerStyle;
/** * 每列标题样式 */
private CellStyle titleStyle;
/** * 数据行样式 */
private CellStyle styles;
public 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;
}
/** * 设置隔行背景色 */
public static CellStyle getStyles(Workbook workbook,boolean isBold,short size) {
CellStyle style = getBaseCellStyle(workbook);
style.setFont(getFont(workbook, size,isBold));
//背景色
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setDataFormat(STRING_FORMAT);
return style;
}
/** * 初始化--大标题样式 * * @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, true));
//背景色
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 static 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 static Font getFont(Workbook workbook, short size, boolean isBold) {
Font font = workbook.createFont();
//字体样式
font.setFontName("宋体");
//是否加粗
font.setBold(isBold);
//字体大小
font.setFontHeightInPoints(size);
return font;
}
}
3、导出
/** * 导出 */
@RequestMapping("/export")
public void export(SysUser query, HttpServletResponse response) throws IOException {
ExportParams params = new ExportParams();
params.setTitleHeight((short) 15);
params.setHeight((short) 12);
params.setStyle(ExcelStyleUtil.class);
List<SysUser> list = sysUserService.list(query);
ExcelUtils.exportExcel(params,list, SysUser.class,"用户列表",response);
}
边栏推荐
- DOM window related data, operations & BOM operations
- 主动扫描技术nmap详解
- MOOC翁恺C语言 第六周:数组与函数:1.数组2.函数的定义与使用3.函数的参数和变量4.二维数组
- MySQL installation and use
- Upload and download files from Ubuntu server
- Uniapp monitor whether the app has a network connection
- Repair the faulty sector
- bond模式配置
- Forward and backward slash notes
- codesensor:将代码转化为ast后再转化为文本向量
猜你喜欢

On cookies and session

FTP service

三层交换和VRRP

Applets: WSX scripts

防火墙——iptables防火墙(四表五链、防火墙配置方法、匹配规则详解)

kali下安装nessus

About gcc:multiple definition of

SSH service configuration

shell脚本——编程条件语句(条件测试、if语句、case分支语句、echo用法、for循环、while循环)

Technology sharing | do you know the functions of the server interface automated testing and requests library?
随机推荐
Archery database audit platform deployment
Technology sharing | detailed explanation of actual combat interface test request methods get, post
Ubuntu18.04 set up redis cluster [learning notes]
Forward and backward slash notes
Group management and permission management
Esxi community network card driver
Servlet
shell脚本——编程条件语句(条件测试、if语句、case分支语句、echo用法、for循环、while循环)
Media set up live broadcast server
[learning notes] linked list operation
metasploit渗透ms7_010练习
DHCP service
Upload and download files from Ubuntu server
kali下安装nessus
Shell script - "three swordsmen" awk command
MOOC翁恺 C语言 第三周:判断与循环:2.循环
读取xml文件里switch节点的IP和设备信息,ping设备,异常显示在列表里
小甲鱼C(第六章数组1、2)
DOM window related data, operations & BOM operations
Esxi community nvme driver update v1.1