推荐篇:原来阿里也对excel情有独钟

最近发现包下有一个excel导入导出工具类,非常好用,对于普通的场景及业务逻辑用起来非常方便 。
记录一下;
位置:
该工具类在 com.包下 。
com.alibabaeasyexcel2.1.6
特性:
该工具类对外提供了:读取和下载excel方法 。
package com.gu.alibabaexcel.utils;import com.alibaba.excel.EasyExcel;import com.alibaba.excel.EasyExcelFactory;import com.alibaba.excel.support.ExcelTypeEnum;import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;import com.alibaba.excel.write.handler.WriteHandler;import com.alibaba.excel.write.metadata.style.WriteCellStyle;import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;import org.apache.poi.ss.usermodel.HorizontalAlignment;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.net.URLEncoder;import java.util.List;import java.util.Objects;/*** @author Mr.Gu* @date 2020/10/21 9:16* @function : excel工具类**/public class ExcelUtil {/*** 读取excel数据* @param excel excel文件* @param cls 映射的实体类*/public static List readExcel(MultipartFile excel, Class cls) throws IOException {return readExcel(excel,cls,1);}/*** 读取excel数据* @param excel excel文件* @param cls 映射的实体类* @param headRowNumber 从第几行开始读0代表从第一行开始 1为第二行*/public static List readExcel(MultipartFile excel,Class cls,int headRowNumber) throws IOException {return EasyExcelFactory.read(excel.getInputStream()).sheet().headRowNumber(headRowNumber).head(cls).doReadSync();}/*** 下载excel*/public static void download(HttpServletResponse response, Class cls, List data, String fileName, String sheetName) throws Exception {download(response, cls, data, fileName, sheetName,null);}public static void download(HttpServletResponse response, Class cls, List data, String fileName, String sheetName, WriteHandler handler) throws Exception {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");//表头样式WriteCellStyle headWriteCellStyle = new WriteCellStyle();//设置表头居中对齐headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//内容样式WriteCellStyle contentWriteCellStyle = new WriteCellStyle();//设置内容靠左对齐contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);ExcelWriterSheetBuilder builder = EasyExcel.write(response.getOutputStream(), cls).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy);if(Objects.nonNull(handler)){builder.registerWriteHandler(handler);}builder.doWrite(data);}}
使用方式:
/*** 导出excel* @param response*/@GetMapping("/exportExcel")public void exportExcel(HttpServletResponse response) {List userList = new ArrayList<>();userList.add(new User(1,"张三","男",20,new BigDecimal(99.5)));userList.add(new User(2,"李四","女",30,new BigDecimal(89.5)));userList.add(new User(3,"王五","男",40,new BigDecimal(79.5)));try {ExcelUtil.download(response,User.class,userList,"学生信息","Sheet1");} catch (Exception e) {e.printStackTrace();}}
/*** 导入excel* @param file* @return*/@PostMapping("/import")public String importExcel(@RequestBody MultipartFile file) {if (file != null) {try {List objectList = ExcelUtil.readExcel(file, User.class,0);System.out.println(objectList);} catch (IOException e) {e.printStackTrace();}}return "成功";}