通过此方法,可以导出表格并且存入File对象中进行其他的操作,这里通过File来进行异步存储到文件服务器,用于下载中心
public static <T> File exportReturnToFile(List<T> data, Class<T> clazz, String fileName) {
File file = null;
//名称拆分前后缀
//1.判断文件名是否有扩展
try {
if (StringUtils.isBlank(fileName)) {
file = File.createTempFile(fileName, "");
} else {
String[] parts = fileName.split("\\.");
String extension = "." + parts[parts.length - 1];
String name = fileName.substring(0, fileName.length() - extension.length() - 1);
file = File.createTempFile(name, extension);
}
} catch (IOException e) {
log.error("文件生成失败,文件名异常.异常信息:{}", e.getMessage());
throw new CustomException("文件生成失败,文件名异常");
}
HorizontalCellStyleStrategy horizontalCellStyleStrategy = defaultStylePolicyPolicy();
//导出
EasyExcel.write(file, clazz)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.registerWriteHandler(horizontalCellStyleStrategy)
.sheet()
.doWrite(data);
return file;
}
/**
* 默认样式策略策略
*
* @return
*/
private static HorizontalCellStyleStrategy defaultStylePolicyPolicy() {
// 头的策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为浅蓝色
headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
//设置水平对齐方式
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//设置字体为微软雅黑
WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontName("宋体");
headWriteCellStyle.setWriteFont(headWriteFont);
// 内容的策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
//设置字体为微软雅黑
WriteFont contentWriteFont = new WriteFont();
contentWriteFont.setFontName("宋体");
contentWriteCellStyle.setWriteFont(contentWriteFont);
// 这个策略是 头是头的样式 内容是内容的样式
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
}