利用EasyExcel将数据导出或导入成Excel格式文件

2.利用easyExcel将数据导出或导入成Excel格式文件
功能实现:将数据导出成Excel格式文件
所用结构:easyExcel API
所用方法:ExcelReader,ExcelWriter
引入pom依赖(Springboot环境):

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>easyexcelartifactId>
    <version>1.1.1version>
dependency>

具体实现代码:(工具类)

/**
 * excel文件导入导出工具类
 * @author XXX
 * @date 2019/6/26
 */
@Slf4j
public class ExcelUtil {

    private static Sheet initSheet;

    /**
     * 监听类,主要处理从Excel获取到的每行数据
     */
    public static class ExcelListener extends AnalysisEventListener {

        private List<Object> data = Lists.newArrayList();

        @Override
        public void invoke(Object object, AnalysisContext context) {

            data.add(object);
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {

            log.debug("解析excel文件完毕,读取行数:{}", data.size());
        }

        public List<Object> getData() {
            return data;
        }

        public void clear(){
            data.clear();
        }
    }

    public static List<Object> loadExcel(String path) { return loadExcel(new File(path), false); }

    public static List<Object> loadExcel(String path, Boolean head) { return loadExcel(new File(path), head); }

    public static List<Object> loadExcel(File file) { return loadExcel(file, false); }

    public static List<Object> loadExcel(File file, Boolean head) {
        ExcelListener listener = new ExcelListener();
        try {

            InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
            ExcelReader excelReader = new ExcelReader(inputStream, null, listener);
            excelReader.read(new Sheet(1, head ? 0 : 1));

        } catch (FileNotFoundException e) {
//            log.error(e.getMessage(), e);

            return Collections.emptyList();
        }
        return listener.getData();
    }

    public static List<Object> loadExcel(InputStream inputStream){
        return loadExcel(inputStream,false);
    };

    public static List<Object> loadExcel(InputStream inputStream, Boolean head) {
        ExcelListener listener = new ExcelListener();
        try {

            ExcelReader excelReader = new ExcelReader(inputStream, null, listener);
            excelReader.read(new Sheet(1, head ? 0 : 1));

        } catch (Exception e) {
            log.error(e.getMessage(), e);

            return Collections.emptyList();
        }
        return listener.getData();
    }
    
    public static List<Object> loadExcel(BufferedInputStream inputStream, Boolean head) {
        ExcelListener listener = new ExcelListener();
        try {

            ExcelReader excelReader = new ExcelReader(inputStream, null, listener);
            excelReader.read(new Sheet(1, head ? 0 : 1));

        } catch (Exception e) {
            log.error(e.getMessage(), e);

            return Collections.emptyList();
        }
        return listener.getData();
    }

    public static List<Object> loadExcel(BufferedInputStream inputStream) {

        return ExcelUtil.loadExcel(inputStream,false);
    }
    public static<R extends BaseRowModel> List<ExcelSheet<R>> loadExcelAllSheet(InputStream inputStream, Boolean head, Class<R> modelClass) {

        List<ExcelSheet<R>> excelSheetList = new ArrayList<>();

        ExcelListener listener = new ExcelListener();
        try {
            ExcelReader excelReader = new ExcelReader(inputStream, null, listener);

            List<Sheet> sheetList = excelReader.getSheets();
            for (Sheet sheet : sheetList) {
                if (CollectionUtils.isNotEmpty(listener.getData())){
                    listener.clear();
                }

                excelReader.read(new Sheet(sheet.getSheetNo(), head ? 0 : 1, modelClass));

                List<R> resultDataList = Lists.newArrayList();
                listener.getData().forEach(value -> resultDataList.add(modelClass.cast(value)));

                ExcelSheet<R> excelSheet = new ExcelSheet<>();
                excelSheet.setFieldList(resultDataList);
                excelSheet.setSheetNumber(sheet.getSheetNo());
                excelSheet.setSheetName(sheet.getSheetName());

                excelSheetList.add(excelSheet);
            }

            return excelSheetList;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return Collections.emptyList();
        }
    }

    public static<R extends BaseRowModel> List<R> loadExcel(InputStream inputStream, Boolean head, Class<R> modelClass) {
        ExcelListener listener = new ExcelListener();
        try {
            ExcelReader excelReader = new ExcelReader(inputStream, null, listener);
            excelReader.read(new Sheet(1, head ? 0 : 1, modelClass));
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return Collections.emptyList();
        }

        List<R> resultDataList = Lists.newArrayList();
        listener.getData().forEach(value -> resultDataList.add(modelClass.cast(value)));
        return resultDataList;
    }

    public static<R extends BaseRowModel> List<R> loadExcel(File file, Boolean head, Class<R> modelClass) {
        try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))){
            return loadExcel(inputStream,head,modelClass);
        }catch (Exception e){
            log.error(e.getMessage(), e);
            return Collections.emptyList();
        }
    }

    public static void writeExcel(OutputStream os, List<List<String>> data){
        try{
            ExcelWriter writer = new ExcelWriter(os, ExcelTypeEnum.XLSX,false);
            writer.write0(data,new Sheet(0,0));
            writer.finish();
        }catch(Exception e){
            log.error(e.getMessage(), e);
        }

    }

    public static void writeExcelModel(OutputStream os,List<? extends BaseRowModel> data,Class<? extends BaseRowModel> clazz,String sheetName){
        try{
            ExcelWriter writer = new ExcelWriter(os, ExcelTypeEnum.XLSX,true);
            Sheet sheet = new Sheet(1,0,clazz,sheetName,null);
            writer.write(data,sheet);
            writer.finish();
        }catch(Exception e){
            log.error(e.getMessage(), e);
        }
    }
}

你可能感兴趣的:(工具类)