当前位置:   article > 正文

使用EasyExcel导出文件的一些格式设置_easyexcel设置表头字体和大小

easyexcel设置表头字体和大小

我们在使用EasyExcel导出文件时,需要设置Excel的一些格式,比如表头字体大小、自动换行、居中、冻结窗格、表头打印固定等

1、设置表头样式
// 创建一个写出的单元格样式对象
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为白色,也可设置为其他颜色
headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());

// 设置表头字体
WriteFont headWriteFont = new WriteFont(); 
// 设置字体大小为12
headWriteFont.setFontHeightInPoints((short)12);
// 设置加粗		
headWriteFont.setBold(true);
// 如需设置斜体		
// headWriteFont.setItalic(BooleanEnum.TRUE.getBooleanValue());
// 把字体对象设置到单元格样式对象中
headWriteCellStyle.setWriteFont(headWriteFont);		
//设置表头居中
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);		
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
2、设置内容样式
// 创建一个写出的单元格样式对象
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();

// 设置内容字体
WriteFont contentWriteFont= new WriteFont(); 
// 设置内容字体大小为12
contentWriteFont.setFontHeightInPoints((short) 12);		
// 把字体对象设置到单元格样式对象中	
contentWriteCellStyle.setWriteFont(contentWriteFont);

// 设置水平居中
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);      
// 设置垂直居中
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

// 边框设置
// BorderStyle.THIN:细线
// BorderStyle.THICK:粗线
// BorderStyle.MEDIUM: 中线
// BorderStyle.MEDIUM_DASHED:中虚线
// 设置单元格左边框为细线
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
// 设置单元格上边框为细线
contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
// 设置单元格右边框为细线
contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
// 设置单元格下边框为细线
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);

//设置 自动换行
contentWriteCellStyle.setWrapped(true);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
3、设置打印表头固定以及冻结窗格第一行

需求:导出的Excel有很多列,打印出来会有很多页纸,需要每页纸都有表头
导出的Excel,下滑需要表头固定

public class CustomSheetWriteHandler implements SheetWriteHandler {
    public int colSplit = 0, rowSplit = 1, leftmostColumn = 0, topRow = 1;
    
    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        //得到Sheet
        Sheet sheet = writeSheetHolder.getSheet();
        // 设置每页都有表头
        sheet.setRepeatingRows(CellRangeAddress.valueOf("1:1"));
        // 设置冻结窗格第一行
        sheet.createFreezePane(colSplit, rowSplit, leftmostColumn, topRow);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
4、输出Excel
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

// 输出 Excel到具体地址
String filePath = "/home/ssp_backend/exportFile/"+ System.currentTimeMillis()+".xlsx";
//  String filePath = "D:\\data\\"+ System.currentTimeMillis()+".xlsx";
        
File tempFile = new File(filePath);
EasyExcel.write(tempFile, Demo.class)
        .registerWriteHandler(horizontalCellStyleStrategy)
        .registerWriteHandler(new CustomSheetWriteHandler())
        .sheet("sheet").doWrite(demoList);


// 输出 Excel
// Class<T> head
EasyExcel.write(response.getOutputStream(), head)
        .autoCloseStream(false) // 不要自动关闭,交给 Servlet 自己处理
        .registerWriteHandler(horizontalCellStyleStrategy)
        .registerWriteHandler(new CustomSheetWriteHandler())
        .sheet(sheetName).doWrite(demoList);
// 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/837726
推荐阅读
相关标签
  

闽ICP备14008679号