【测试开发】知识点-使用EasyExcel,实现excel导出和导入

上篇介绍了下EasyExcel的读写excel文件的使用,现在利用它来实现项目中的excel文件导出和导入的功能。原文在这里:

https://blog.csdn.net/qq_60168783/article/details/122131947

软件测试安装包,学习路线以及python入门到进阶,爬虫数据分析全套资料分享讲解编程简单学 / python · GIT CODE

现在有一个字典列表,要把里面的数据实现导出和导入。

【测试开发】知识点-使用EasyExcel,实现excel导出和导入

一、实现导出

既然是整合到项目里,跟之前的练习还是有些区别的。说是导出功能,实际上也算是个下载的操作。

  1. 实现后端接口

controller 类中增加导出数据字典的控制器方法。

@Override
    public void importDictData(MultipartFile file) {

    }
复制代码

不过目前里面还写不了,因为需要先去写一个监听器。

public class DictListener extends AnalysisEventListener<dicteevo> {
    private DictMapper dictMapper;

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

    // &#x4E00;&#x884C;&#x4E00;&#x884C;&#x8BFB;&#x53D6;
    @Override
    public void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {
        // &#x8C03;&#x7528;&#x65B9;&#x6CD5;&#xFF0C;&#x6DFB;&#x52A0;&#x5230;&#x6570;&#x636E;&#x5E93;&#x8868;&#x91CC;
        Dict dict = new Dict();
        // dictEeVo &#x8F6C;&#x6362;&#x6210; dict
        BeanUtils.copyProperties(dictEeVo, dict);
        dictMapper.insert(dict);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}
&#x590D;&#x5236;&#x4EE3;&#x7801;</dicteevo>

注意这里面的一个细节,因为在 invoke方法中,一行行读取后,我需要把这每行的数据添加到数据库中,那么自然需要用到 dictMapper

那么我这个监听器里如何才可以支持传入 dictMapper呢?其中一个方法就是通过有参构造方法来注入:

    private DictMapper dictMapper;

    public DictListener(DictMapper dictMapper) {
        this.dictMapper = dictMapper;
    }
&#x590D;&#x5236;&#x4EE3;&#x7801;

现在监听器完成,继续完成 importDictData方法:

    @Override
    public void importDictData(MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(), DictEeVo.class, new DictListener(baseMapper)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
&#x590D;&#x5236;&#x4EE3;&#x7801;

new DictListener(baseMapper))这里在传入监听器的时候里面就要带上 dictMapper,这里放的是 baseMapper也可以。

  1. 实现前端整合

添加导入按钮,绑定 @click调用上传方法。

<el-button type="text" @click="importData"> &#x5BFC;&#x5165;</el-button>
&#x590D;&#x5236;&#x4EE3;&#x7801;

点击导入后跳出对话框,增加友好度。

【测试开发】知识点-使用EasyExcel,实现excel导出和导入
  • :multiple: 表示是否上传多个文件,这里用单个

  • :on-success: 文件上传成功会调用的方法

  • :action:请求的接口路径

对应里面的方法:

        //&#x5BFC;&#x5165;&#x6570;&#x636E;&#x5B57;&#x5178;
        importData() {
            this.dialogImportVisible = true
        },
        //&#x4E0A;&#x4F20;&#x6210;&#x529F;&#x8C03;&#x7528;
        onUploadSuccess() {
            //&#x5173;&#x95ED;&#x5F39;&#x6846;
            this.dialogImportVisible = false
            //&#x5237;&#x65B0;&#x9875;&#x9762;
            this.getDictList(1)
        },
&#x590D;&#x5236;&#x4EE3;&#x7801;

准备一份数据测试一下:

【测试开发】知识点-使用EasyExcel,实现excel导出和导入

上传成功。

【测试开发】知识点-使用EasyExcel,实现excel导出和导入

查看数据库里数据正确。

【测试开发】知识点-使用EasyExcel,实现excel导出和导入

Original: https://blog.csdn.net/qq_60168783/article/details/122132080
Author: 可可爱爱的程序员
Title: 【测试开发】知识点-使用EasyExcel,实现excel导出和导入

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/772734/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球