导出样式

一、设置头部
@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)
);
