java用easyexcel導入導出excel

easyexcel導出excel模板

pom文件添加jar依賴

   <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.4</version>
    </dependency>

導出excle

    @GetMapping("export")
    public void export(CivilizedLuckyDrawQuery query, HttpServletResponse response) {
        DataResult<DrawVO> luckyDrawVODataResult = luckyDrawService.queryCivilizedList(query);
        List<DrawVO> data = luckyDrawVODataResult.getData();
        try {
            String fileName = "excel命名_"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
            String sheetName = "sheet命名";
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            fileName = URLEncoder.encode(fileName, "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");
            EasyExcel.write(response.getOutputStream(), CivilizedLuckyDrawVO.class).sheet(sheetName).doWrite(data);
        } catch (IOException e) {
            log.error("導出異常,e: {}", e);
        }
    }

導入excel

	/**
     * 解析excel取得數據
     *
     * @param tempFile
     * @param suffix_flex
     * @return
     */
    public List<List<String>> getDatasByDealExcel(File tempFile, String suffix_flex) {
        InputStream in = null;
        try {
            in = new FileInputStream(tempFile);
            ExcelListener listener = new ExcelListener();
            ExcelTypeEnum type = suffix_flex.equals(".xls") ? ExcelTypeEnum.XLS : ExcelTypeEnum.XLSX;
            ExcelReader excelReader = new ExcelReader(in, type, null, listener);
            excelReader.read();
            //線面的獲取也是正確的
            //Sheet sheet = new Sheet(1, 1);
            // List<Object> list = EasyExcelFactory.read(in, sheet);
            List<List<String>> datas = listener.getDatas();

            return datas;
        } catch (Exception e) {

        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                log.error("excel文件讀取失敗, 失敗原因:{}", e);
            }
        }
        return null;
    }

ExcelListener代碼展示;

@Component
public class ExcelListener extends AnalysisEventListener {

    public List<List<String>> datas = new ArrayList<>();

    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        List<String> stringList= (List<String>) o;
        System.out.println("當前sheet"+analysisContext.getCurrentSheet().getSheetNo()+ " 當前行:" + analysisContext.getCurrentRowNum()
                + " data:" + stringList.get(0));
        datas.add(stringList);//數據存儲到list,供批量處理,或後續自己業務邏輯處理。
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    public List<List<String>> getDatas() { return datas; }
    public void setDatas(List<List<String>> datas) { this.datas = datas; }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章