導出樣式

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