導出樣式
一、設置頭部
@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)
);