package com.moon.server.helper; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.enums.WriteDirectionEnum; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillWrapper; import com.moon.server.annotation.ExcelHead; import java.util.*; @SuppressWarnings("ALL") public class ExcelHelper { public static List readExcel(Class clazz, String pathName) { ExcelHead head = getExcelHead(clazz); int headRowNumber = head == null ? 1 : head.headRows(); String[] strs = null == head || StringHelper.isEmpty(head.excludeSheets()) ? null : head.excludeSheets().split(","); List excludeSheets = null == strs ? null : Arrays.asList(strs); List list = new ArrayList(); ExcelReader reader = EasyExcel.read(pathName, clazz, new AnalysisEventListener() { @Override public void invoke(T t, AnalysisContext context) { list.add(t); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // } }).headRowNumber(headRowNumber).build(); List sheets = reader.excelExecutor().sheetList(); for (ReadSheet sheet : sheets) { if (strs != null && excludeSheets.contains(sheet.getSheetName())) { continue; } reader.read(sheet); } reader.finish(); return list; } public static ExcelHead getExcelHead(Class clazz) { ExcelHead head = clazz.getAnnotation(ExcelHead.class); return head; } public static void writeToTemplate(String source, String target, Map> map) { ExcelWriter excelWriter = EasyExcel.write(target).withTemplate(source).build(); WriteSheet writeSheet = EasyExcel.writerSheet(0).build(); FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); map.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet)); excelWriter.finish(); } }