上传下载excel表时,java中EsayExcel类实现

  1. 上传excel文件

@RequestMapping("/excelImport")
public String upload(@RequestParam MultipartFile file) throws Exception {
    String fileName = file.getOriginalFilename();
    String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
    if (!fileType.endsWith("xlsx") && !fileType.endsWith("xls")) {
        return "文件类型错误";
    }
    InputStream fileInputStream = null;
    fileInputStream = file.getInputStream();
    //调用EasyExcel.read然后去调用你写的监听器,随后去执行你写的Service
    EasyExcel.read(fileInputStream, Student.class, new ExcelListener()).sheet().doRead();
    return "CommonContent.ok()";
}

上传excel对应的监听器:

@Component
public class ExcelListener extends AnalysisEventListener {
    @Override
    public void invoke(Student student, AnalysisContext analysisContext) {
        System.out.println(student);
        System.out.println("haha");
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    }
    @Override
    public void invokeHeadMap(Map headMap, AnalysisContext analysisContext) {
        System.out.println(headMap);
    }
}

下载excel文件:

@RequestMapping("/write")
public void writeExcel(HttpServletResponse response) throws Exception{
    //设置文件头
    response.setContentType("application/vnd.ms-excel");
    response.setCharacterEncoding("utf-8");
    String fileName="hello";
    response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + ".xlsx\"");

    //把东西按流形式进行保存方便等下进行文件下载功能
    ServletOutputStream outputStream = response.getOutputStream();
    ExcelWriterBuilder write = EasyExcel.write(outputStream, Student.class);
    ArrayList list = new ArrayList<>();
    for (int i = 0; i < 10; i++) {
        Student student = new Student();
        student.setId(i);
        student.setName("学生"+i);
        student.setSalary(i*10);
        list.add(student);
    }
    //list为需要下载的数据
    write.sheet().doWrite(list);

}

你可能感兴趣的:(java)