java一個簡單的EasyExcel導出excel模板api


導出樣式

 

 

一、設置頭部

@HeadRowHeight(35)//表頭行高
@ContentRowHeight(25)//內容行高
@ColumnWidth(20)//列寬
@Data
@TableName("student")
public class ExcelInfo {
    @ExcelIgnore
    private Integer id;
    @ExcelProperty(value = {"學生姓名"}, index = 0)
    private String name;
    @ExcelProperty(value = {"學生信息","學生年齡"}, index = 1)
    private Integer age;
    @ExcelProperty(value = {"學生信息","學生性別"}, index = 2)
    private Integer sex;
    @ExcelProperty(value = {"學生信息","學生住址"}, index = 3)
    private String address;
    @ExcelProperty(value = {"學生電話"}, index = 4)
    private String phone;
    @ExcelIgnore
    @ExcelProperty(value = {"學生信息","學生狀態"}, index = 5)
    private Integer status;

}

二、為了方便邏輯是直接寫在controller層

@RestController
@RequestMapping("/excel")
@Slf4j
public class ExcelController {
    @Resource
    private ExcelService excelService;

    @GetMapping("/export")
    public void export(HttpServletResponse response) {
        String filename = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xlsx";
        ExcelWriter excelWriter = null;
        try {
            // 頭的策略
            WriteCellStyle headWriteCellStyle = new WriteCellStyle();
            // 背景色
            headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
            WriteFont headWriteFont = new WriteFont();
            headWriteFont.setFontHeightInPoints((short) 12);
            headWriteCellStyle.setWriteFont(headWriteFont);

            WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
            // 字體策略
            WriteFont contentWriteFont = new WriteFont();
            // 字體大小
            contentWriteFont.setFontHeightInPoints((short) 12);
            contentWriteCellStyle.setWriteFont(contentWriteFont);

            //設置 自動換行
            contentWriteCellStyle.setWrapped(true);
            //設置 垂直居中
            contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
            //水平居中
            contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
            //設置邊框樣式
            contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
            contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
            contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
            contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
            //傳入樣式
            HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

            List<ExcelInfo> list = excelService.list();
            response.setHeader("Content-Disposition", "attachment;filename=" + filename);
            //導入一個sheet
//            EasyExcel.write(response.getOutputStream(), ExcelInfo.class).sheet(1,"模板1").registerWriteHandler(horizontalCellStyleStrategy).doWrite(list);
           //導入多個sheet
            excelWriter  = EasyExcel.write(response.getOutputStream(), ExcelInfo.class).build();
            //創建一個sheet
            WriteSheet writeSheet = EasyExcel.writerSheet(0, "模板1").registerWriteHandler(horizontalCellStyleStrategy).build();
            excelWriter.write(list, writeSheet);
            //創建一個新的sheet
            writeSheet = EasyExcel.writerSheet(1, "模板2").registerWriteHandler(horizontalCellStyleStrategy).build();
            excelWriter.write(list, writeSheet);
        } catch (IOException e) {
            e.printStackTrace();
            log.error("導出{}文件失敗!", filename);
        }finally {
            //關閉流
            if(excelWriter != null){
                excelWriter.finish();
            }
        }
    }
}

三、數據庫(ORM框架用的mybatis-plus)

create database  db_excel;
use db_excel;
create table if not exists student(
id int primary key auto_increment,
name varchar(20),
age int,
sex int(2) ,
address varchar(30),
phone varchar(11),
status int(2)
);

  


免責聲明!

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



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