0
点赞
收藏
分享

微信扫一扫

后端用Easyexcel实现导入和导出excel文件

幸福的无所谓 2022-04-07 阅读 95

先导入依赖

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

这里直接展示业务类service代码

因为Controller代码也是直接调用service方法,唯一注意的是要用post请求

导出内容为excel格式

    @Override
    public void exportDictData(HttpServletResponse response) {
        //设置下载信息
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = "dict";
        response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");
        //查询数据库
        List<Dict> list = baseMapper.selectList(null);

        //写入excel 第二个参数是实体类
        try {
            EasyExcel.write(response.getOutputStream(), Dict.class).sheet("dict").doWrite(list);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

导入excel

    @Override
    public void importData(MultipartFile file) {
        try {
            //basemapper是mybatis plus自带的
            EasyExcel.read(file.getInputStream(),Dict.class, new DictListener(baseMapper)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

注意导入的read方法的第三个参数是监听器,需要创建一个监听器

public class DictListener extends AnalysisEventListener<Dict> {

    private DictMapper dictMapper;
    public DictListener(DictMapper dictMapper) {
        this.dictMapper = dictMapper;
    }

    //一行一行读取
    @Override
    public void invoke(Dict dict, AnalysisContext analysisContext) {
        dictMapper.insert(dict);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}
举报

相关推荐

0 条评论