All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xinjump.easyexcel.example.biz.controller.XinJumpController Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
package com.xinjump.easyexcel.example.biz.controller;

import cn.hutool.core.convert.Convert;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.google.common.collect.Lists;
import com.xinjump.easyexcel.batch.BatchKit;
import com.xinjump.easyexcel.example.biz.model.req.UserExcelReq;
import com.xinjump.easyexcel.example.biz.model.res.UserExcelRes;
import com.xinjump.easyexcel.example.converter.UserConverter;
import com.xinjump.easyexcel.exception.ExcelException;
import com.xinjump.easyexcel.handler.ExcelHandler;
import com.xinjump.easyexcel.helper.EasyExcelHelper;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author xinjump
 * @version 1.1
 * @date 2020/9/2 15:19
 */
@RestController
public class XinJumpController {

    @Resource
    private ExcelHandler excelHandler;
//    @Resource
//    private UserEventListener userEventListener;

    @GetMapping("/downloadTemplate")
    public void downloadTemplate(@RequestParam String type, HttpServletResponse response) throws Exception {

        List list = Lists.newArrayList();
        list.add(UserExcelReq.builder()
                .userId(111L)
                .userName("张三")
                .password("123451234567234567834566789")
                .build());
        excelHandler.download(type, response, list);
    }

    @GetMapping("/import")
    public ResponseEntity read(@RequestParam String types, @RequestPart MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {

        try {
            String[] type = types.split(",");
            excelHandler.read(type[0], file.getInputStream(), 0, request, response);
            excelHandler.read(type[1], file.getInputStream(), 1, request, response);
            excelHandler.read(type[2], file.getInputStream(), 2, request, response);
        } catch (ExcelException e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
        }
        return ResponseEntity.ok().build();
//        userEventListener.setResponse(response);
//        EasyExcelHelper.read(file.getInputStream(), userEventListener);
    }

    @GetMapping("/getProgressBar")
    public ResponseEntity getProgressBar(@RequestParam String type) {

        return ResponseEntity.ok(excelHandler.getProgressBar(type));
    }

    @GetMapping("/export")
    public ResponseEntity export(@RequestParam long count, HttpServletResponse response) {

        // 1
        excelHandler.write(response, this.getList(count));

        // 2
        ExcelWriter excelWriter = EasyExcelHelper.getExcelWriter(response, "用户信息");
        WriteSheet writeSheet = EasyExcel.writerSheet(0, "用户1")
                .head(UserExcelRes.class)
                .registerConverter(new UserConverter())
                .build();
        excelWriter.write(this.getList(count), writeSheet);
        excelWriter.finish();
        return ResponseEntity.ok().build();
    }

    @GetMapping("/batchExport")
    public void batchExport(HttpServletResponse response) {

        ExcelWriter excelWriter = EasyExcelHelper.getExcelWriter(response, "用户信息");

        WriteSheet writeSheet1 = EasyExcelHelper.getWriteSheet(0, "用户1", UserExcelRes.class);

        WriteSheet writeSheet2 = EasyExcelHelper.getWriteSheet(0, "用户2", UserExcelRes.class);

        BatchKit., UserExcelRes>builder()
                .queryFun(this::getList)
                .listConsumer(e -> {
                    excelWriter.write(e, writeSheet1);
                    excelWriter.write(e, writeSheet2);
                }).call();

//        BatchKit, UserExcelRes> batchKit = new BatchKit<>();
//        batchKit.queryFun(this::getList)
//                .listConsumer(e -> {
//                    excelWriter.write(e, writeSheet1);
//                    excelWriter.write(e, writeSheet2);
//                }).call();

        excelWriter.finish();
    }

    private List dtoList = getList(100090);

    private List getList(Map map) {
        Long pageSize = Convert.toLong(map.get("pageSize"));
        Long pageNum = Convert.toLong(map.get("pageNum"));
        return dtoList
                .stream()
                .skip((pageNum - 1) * pageSize)
                .limit(pageSize)
                .collect(Collectors.toList());
    }

    private List getList(long count) {
        List dtoList = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            dtoList.add(UserExcelRes.builder()
                    .userName("张三" + i)
                    .userId((long) i)
                    .account("李四" + i)
                    .build());
        }
        return dtoList;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy