¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yssh.utils; |
| | | |
| | | 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.yssh.entity.ExcelHead; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Excel帮å©ç±» |
| | | * @author WWW |
| | | * @date 2023-08-08 |
| | | */ |
| | | public class ExcelUtils { |
| | | /** |
| | | * 读åExcel |
| | | * |
| | | * @param pathName æä»¶è·¯å¾ |
| | | * @param <T> æ³åç±» |
| | | * @return æ³åç±»éå |
| | | */ |
| | | public static <T> List<T> readExcel(Class<?> clazz, String pathName) { |
| | | ExcelHead head = getExcelHead(clazz); |
| | | int headRowNumber = head == null ? 1 : head.headRows(); |
| | | String[] strs = null == head || StringUtils.isEmpty(head.excludeSheets()) ? null : head.excludeSheets().split(","); |
| | | List<String> excludeSheets = null == strs ? null : Arrays.asList(strs); |
| | | |
| | | List<T> list = new ArrayList<T>(); |
| | | ExcelReader reader = EasyExcel.read(pathName, clazz, new AnalysisEventListener<T>() { |
| | | @Override |
| | | public void invoke(T t, AnalysisContext context) { |
| | | list.add(t); |
| | | } |
| | | |
| | | @Override |
| | | public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
| | | // |
| | | } |
| | | }).headRowNumber(headRowNumber).build(); |
| | | |
| | | List<ReadSheet> sheets = reader.excelExecutor().sheetList(); |
| | | for (ReadSheet sheet : sheets) { |
| | | if (strs != null && excludeSheets.contains(sheet.getSheetName())) { |
| | | continue; |
| | | } |
| | | |
| | | reader.read(sheet); |
| | | } |
| | | reader.finish(); |
| | | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * è·åExcel头注解类 |
| | | * |
| | | * @param clazz Class |
| | | * @param <T> æ³åç±» |
| | | * @return å¤´è¡æ° |
| | | */ |
| | | public static <T> ExcelHead getExcelHead(Class<?> clazz) { |
| | | ExcelHead head = clazz.getAnnotation(ExcelHead.class); |
| | | |
| | | return head; |
| | | } |
| | | |
| | | /** |
| | | * åå
¥Excelæ¨¡æ¿ |
| | | * |
| | | * @param source æºæä»¶ï¼æ¨¡æ¿ï¼ |
| | | * @param target ç®å½æä»¶ |
| | | * @param map æ°æ®æº |
| | | */ |
| | | public static <T> void writeToTemplate(String source, String target, Map<String, List<T>> map) { |
| | | // æ ¹æ®æ¨¡æ¿åå
¥æ°æ®ï¼å¦æç®æ æä»¶ä¸åå¨ï¼åèªå¨å建æä»¶ |
| | | ExcelWriter excelWriter = EasyExcel.write(target).withTemplate(source).build(); |
| | | |
| | | // å¨å·¥ä½ç°¿0ä¸åå
¥æ°æ®ï¼å¦ææ¨¡æ¿ä¸ä¸åå¨ç»ä¹ å·¥ä½ç°¿ï¼åä¼å¨ç®æ æä»¶ä¸èªå¨å建 |
| | | WriteSheet writeSheet = EasyExcel.writerSheet(0).build(); |
| | | |
| | | // åç´åå
¥æ°æ®ï¼å¦æè¦æ°´å¹³åå
¥ï¼å°VERTICALæ¿æ¢ä¸ºHORIZONTAL |
| | | FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); |
| | | |
| | | // åå
¥æ°æ® |
| | | map.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet)); |
| | | |
| | | // ç»æåå
¥ |
| | | excelWriter.finish(); |
| | | } |
| | | } |