栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java easyexcel读取多个sheet示例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java easyexcel读取多个sheet示例代码

以下是利用alibaba easyexcel读取excel中多个sheet中的参考示例代码:

 

controller控制层方法:

     @ApiOperation("上传文件")
     @RequestMapping(value = "/upload", method = RequestMethod.POST)
     public R upload(@RequestParam("file") MultipartFile file,@RequestParam(value = "processType",required = false) Integer processType,@RequestParam(value = "sourceAuditId",required = false) Integer auditId) throws Exception {

        // 获取文件名
        if(file==null){
            return  R.error("文件不能为空");
        }
        String fileName = file.getOriginalFilename();
        if (StringUtils.isEmpty(fileName)){
            return  R.error("文件名不能为空");
        }
        // 获取文件后缀
        String prefix=fileName.substring(fileName.lastIndexOf("."));
        if (!prefix.toLowerCase().contains("xls") && !prefix.toLowerCase().contains("xlsx") ){
            return  R.error("文件格式异常,请上传Excel文件格式");
        }
        //由于2003和2007的版本所使用的接口不一样,所以这里统一用Workbook做兼容
        boolean isExcel2003 = prefix.toLowerCase().endsWith("xls")?true:false;
        InputStream inputStream=null;
        UploadAssetDataVO uploadAssetDataVO=null;
        try{
            inputStream= file.getInputStream();
            uploadAssetDataVO = uploadAssetService.uploadAssetData(inputStream,processType,isExcel2003);
            return R.okWithData(uploadAssetDataVO);
        }catch (Exception e){
            e.printStackTrace();
            if(e.getMessage()!=null&&( e.getMessage().contains("Office")|| e.getMessage().contains("模板") ) ){
                return R.error("上传失败,原因如下:"+"导入模板不对");
            }else{
                return R.error("上传失败,原因如下:"+e.getMessage());
            }

        }finally {
            if(inputStream!=null){
                inputStream.close();
            }
        }

    }

service实现类业务方法:

@Override
    public UploadAssetDataVO uploadAssetData(InputStream inputStream,Integer processType,  boolean isExcel2003) throws Exception {
        UploadAssetDataVO uploadAssetDataVO=new UploadAssetDataVO();
        ExcelReader excelReader = null;
        List  subjectDomainList=null;
        List  bizObjectModelList=null;
        List  logicEntityModelList=null;
        List  attributeModelList=null;
        List   techMetadataModelList=null;
        LocalDateTime now=LocalDateTime.now();
        Long userId= ShiroUtils.getUserId();
        Integer uploadId=null;
        Integer uploadFlag=3;
        try {
            if(isExcel2003){
                excelReader = EasyExcel.read(inputStream)
                        .excelType(ExcelTypeEnum.XLS).build();
            }else{
                excelReader = EasyExcel.read(inputStream)
                        .excelType(ExcelTypeEnum.XLSX).build();
            }

            DataExcelUpload  dataExcelUpload=new DataExcelUpload();
            dataExcelUpload.setCreateTime(now);
            dataExcelUpload.setUploadTime(now);
            dataExcelUpload.setCreatePer(userId);
            dataExcelUpload.setUpdateUserId(userId);
            dataExcelUpload.setUpdatePer(userId);
            // 1:上传成功  2:上传失败  3:上传中
            dataExcelUpload.setUploadFlag(uploadFlag);
            excelUploadService.save(dataExcelUpload);
            uploadId=dataExcelUpload.getId();
        



            BizObjectExcelListener bizObjectExcelListener=new BizObjectExcelListener();
            ReadSheet readSheet2 = EasyExcel.readSheet("sheet1").head(BizObjectModel.class).registerReadListener(bizObjectExcelListener).build();
            excelReader.read(readSheet2);
            bizObjectModelList= bizObjectExcelListener.getDataList();

           
            LogicEntityExcelListener logicEntityExcelListener=new LogicEntityExcelListener();
            ReadSheet readSheet3= EasyExcel.readSheet("sheet2").head(LogicEntityModel.class).registerReadListener(logicEntityExcelListener).build();
            excelReader.read(readSheet3);
            logicEntityModelList= logicEntityExcelListener.getDataList();



           
            AttributeExcelListener attributeExcelListener=new AttributeExcelListener();
            ReadSheet readSheet4= EasyExcel.readSheet("sheet3").head(AttributeModel.class).registerReadListener(attributeExcelListener).build();
            excelReader.read(readSheet4);
            attributeModelList= attributeExcelListener.getDataList();

           
            TechMeatadataExcelListener techMeatadataExcelListener=new TechMeatadataExcelListener();
            ReadSheet readSheet5= EasyExcel.readSheet("sheet4").head(TechMetadataModel.class).registerReadListener(techMeatadataExcelListener).build();
            excelReader.read(readSheet5);
            techMetadataModelList= techMeatadataExcelListener.getDataList();

            if(AuditBizTypeEnum.ASSET_DATA.equals(processType)){
               
                if(CollectionUtil.isEmpty(attributeModelList)){
                    throw  new RuntimeException("导入数据不能为空");
                }
                if(attributeModelList.size()>1000){
                    throw  new RuntimeException("数据超过1000条");
                }
                boolean  attributeFlag=attributeInfoUploadService.saveDataAttributeModelList(uploadId,attributeModelList);

                // 1:上传成功  2:上传失败  3:上传中
                if( !attributeFlag){
                    //如果业务校验失败,则标识失败
                    uploadFlag=2;
                }else{
                    uploadFlag=1;
                }
            }else if(AuditBizTypeEnum.ASSET_TECH.equals(processType)){
                if(CollectionUtil.isEmpty(attributeModelList)){
                    throw  new RuntimeException("导入数据不能为空");
                }
               
                if(techMetadataModelList.size()>1000){
                    throw  new RuntimeException("数据超过1000条");
                }
                boolean  techMetadataFlag= techMetadataUploadService.saveTechMetadataModelList(uploadId,techMetadataModelList);

                // 1:上传成功  2:上传失败  3:上传中
                if( !techMetadataFlag){
                    //如果业务校验失败,则标识失败
                    uploadFlag=2;
                }else{
                    uploadFlag=1;
                }
            }else{
               
                if(CollectionUtil.isEmpty(bizObjectModelList)&&CollectionUtil.isEmpty(logicEntityModelList)&&CollectionUtil.isEmpty(attributeModelList)&& CollectionUtil.isEmpty(techMetadataModelList )){
                    throw  new RuntimeException("导入数据为空");
                }
                if(bizObjectModelList.size()>1000){
                    throw  new RuntimeException("超过1000条");
                }
                if(logicEntityModelList.size()>1000){
                    throw  new RuntimeException("超过1000条");
                }
                if(attributeModelList.size()>1000){
                    throw  new RuntimeException("超过1000条");
                }
               
                boolean  bizObjectFlag=bizObjectUploadService.saveBizObjectModelList(uploadId,bizObjectModelList);
                boolean  logicEntityFlag=logicEntityUploadService.saveLogicEntityModelList(uploadId,logicEntityModelList);
                boolean  attributeFlag=attributeInfoUploadService.saveDataAttributeModelList(uploadId,attributeModelList);
              

                // 1:上传成功  2:上传失败  3:上传中
                if(!bizObjectFlag || !logicEntityFlag || !attributeFlag ){
                    //如果业务校验失败,则标识失败
                    uploadFlag=2;
                }else{
                    uploadFlag=1;
                }

            }


        }catch (Exception e){
            e.printStackTrace();
            uploadFlag=2;
            throw  new RuntimeException(e.getMessage());
        } finally {
            if (excelReader != null) {
                // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
                excelReader.finish();
            }
            DataExcelUpload  dataExcelUploadUpdate=new DataExcelUpload();
            dataExcelUploadUpdate.setId(uploadId);
            dataExcelUploadUpdate.setUploadFlag(uploadFlag);
            excelUploadService.updateById(dataExcelUploadUpdate);
            uploadAssetDataVO.setUploadFlag(uploadFlag);
            uploadAssetDataVO.setUploadId(uploadId);
        }

        return uploadAssetDataVO;
    }

其中一个ExcelListenter

package com.cwp.service.listener;


import com.cwp.vo.BizObjectModel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class BizObjectExcelListener extends AnalysisEventListener {

    List dataList=new ArrayList<>();


    @Override
    public void invoke(BizObjectModel data, AnalysisContext analysisContext) {
      
        dataList.add(data);
    }

    @Override
    public void invokeHeadMap(Map headMap, AnalysisContext context) {
   
        Iterator> it = headMap.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry entry = it.next();
          
        }
        // 根据自己的情况去做表头的判断即可
    }

    @Override
    public void onException(Exception exception, AnalysisContext context) throws Exception {
        throw new RRException(exception.getMessage());
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    public   List  getDataList(){
        return dataList;
    }

}

 

其中一个ExcelModel

package com.cwp.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class BizObjectModel {


   
    @ExcelProperty(value = "编码",order = 1)
    private String code;


   
    @ExcelProperty(value = "名称",order = 5)
    private String name;

   
}

 

pom.xml引入alibaba-easyexcel依赖片段

 
        
            com.alibaba
            easyexcel
            2.2.6
            
                
                    cglib
                    cglib
                
            
        

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/843163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号