easyExcel读取文件

1、引入依赖

        
            com.alibaba
            easyexcel
            2.2.10
            compile
        

2、写接口(因为我这里要获取文件名中的信息,所以有file.getOriginalFilename)

/**
     * 导入
     * @return
     */
    @PostMapping("/import")
    public Map import(@RequestParam(value = "file", required = true) MultipartFile file) throws IOException {
        Map result =null;
        String originalFilename = file.getOriginalFilename();
        String fileName = originalFilename.substring(0, originalFilename.indexOf("."));
        result = planSscMatchService.importSscflow(file.getInputStream(),fileName);
        return result;
    }

3、新建导入文件的实体类

/**
 * 流水表格实体
 */
@Data
public class SsccFlowImport {
    /**
     * 第一列的数据
     */
    @ExcelProperty(value = "交易时间",index = 0)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date entrydate;
    /**
     * 第二列的数据
     */
    @ExcelProperty(value = "对方户名",index = 1)
    private String partnername;
    /**
     * 第三列的数据
     */
    @ExcelProperty(value = "对方账号",index = 2)
    private String partneraccount;
    /**
     * 第四列的数据
     */
    @ExcelProperty(value = "收入金额",index = 3)
    private Integer inflow;
    /**
     * 第五列的数据
     */
    @ExcelProperty(value = "支出金额",index = 4)
    private Integer outflow;
    /**
     * 第六列的数据
     */
    @ExcelProperty(value = "账户余额",index = 5)
    private Integer balance;
    /**
     * 第七列的数据
     */
    @ExcelProperty(value = "摘要",index = 6)
    private String describe;
}

4、新建一个表格的监听器

@Slf4j
public class DataEasyExcelListener extends AnalysisEventListener {

    private List list = new ArrayList<>();

    @Override
    public void invoke(Object data, AnalysisContext analysisContext) {
        log.info("解析到一条数据:{}", data);
        list.add((T) data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        log.info("所有数据解析完成!");
    }

    public List getData() {
        return list;
    }
}

5、导入文件(最关键的就是EasyExcel.read()方法)

 @Override
    @Transactional
    public Map importSscflow(InputStream io, String name)  {
        Map resultMap = new HashMap();
        DataEasyExcelListener listener = new DataEasyExcelListener<>();
        EasyExcel.read(io, SsccFlowImport.class, listener).sheet(0).doRead();
        List data = listener.getData();
        //保存数据
        sscFlowMapper.batchImportInsert(data);
        }
        resultMap.put("successNum", data.size());
        return resultMap;
    }

你可能感兴趣的:(java日常学习整理,jar,java)