【测试开发】知识点-使用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)

大家都在看

  • 翻转数组(flip()函数)–numpy

    函数功能 沿着指定轴翻转数组元素的顺序,数组形状保持不变,但是数组元素顺序会被重排 函数语法 numpy.flip(m, axis=None) 函数参数与示例 参数含义m输入数组a…

    Python 2023年8月23日
    053
  • [pytest] 运行方式、常用参数、前后置条件

    视频教程传送门 -> 2022最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2022新版)_哔哩哔哩_bilibili 目录 一、…

    Python 2023年9月10日
    049
  • 详解字符编码与 Unicode

    人类交流使用 A、 B、 C、 &#x4E2D; 等字符,但计算机只认识 0 和 1。因此,就需要将人类的字符,转换成计算机认识的二进制编码。这个过程就是字符编码。 ASC…

    Python 2023年10月21日
    041
  • 【Python】 循环遍历Numpy中的Array

    引言 Numpy是Python中常见的数据处理库。Numpy是 Numerical Python的缩写,它是数据科学中经常使用的库。Numpy专门用于处理矩阵运算,因为它包含各式各…

    Python 2023年8月2日
    050
  • 一文详解python中的数据库操作

    python中的数据库操作 * – 一、数据库编程接口 – + 1. 连接对象 – 二、使用内置的SQLite – + 1.创建数据…

    Python 2023年8月1日
    056
  • day21-多线程

    生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。 所谓生产者消费者问题,实际上主要是包含了两类线程: ​ 一类是生产者线…

    Python 2023年11月7日
    046
  • pygame 精灵

    Pygame精灵 pygame.sprite.Sprite是pygame实现的一个类,使用是需要继承,扩展自己的方法。精灵就是屏幕上的一个元素,可以是图片或者形状,可以移动交互。 …

    Python 2023年9月18日
    025
  • 【面试总结】各种案例,给你xxx功能,怎么测?(测试思维)

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/upstudy/p/16711219.htmlAutho…

    Python 2023年6月15日
    056
  • 最近大火的「元宇宙」是什么?

    作者:腾讯技术工程特约撰稿人 李佳华 本文将介绍元宇宙的由来和底层技术,探讨海内外资本在这条赛道上的布局,元宇宙将会对哪些行业产生变革的影响,这些影响背后凸显了元宇宙的哪些价值,以…

    Python 2023年9月27日
    054
  • Pytest+Allure报告内容定制基础

    通过【Allure装饰器】定制测试报告 @allure.epic(“”)用于定义被测用的项目/系统;往下级别是feature@allure.feature(…

    Python 2023年9月14日
    044
  • Web3中文|NFT如何促进教育的发展?

    自问世以来,NFT已经被应用于教育、艺术等多个领域。不过,相较于艺术行业,大多数人对NFT在教育界的作用知之甚少。 那么,就让我们来看看它们在课堂内外的影响都有哪些。 得益于区块链…

    Python 2023年9月15日
    032
  • Python 虚拟环境安装,以及使用Pycharm创建一个flask项目

    文章目录 Python虚拟环境安装 一、虚拟环境安装步骤 二、使用Pycharm创建flask项目 一、Python虚拟环境安装 Windows系统下,打开cmd窗口,输入以下命令…

    Python 2023年8月13日
    050
  • DataFrame详解——缺失数据处理

    缺失数据处理 方法解释DataFrame.backfill([axis, inplace, limit, …])后向填充,等同于 DataFrame.fillna(me…

    Python 2023年8月18日
    048
  • Numpy、pandas基础(数据分析)

    第4章 Numpy基础:数组与向量化计算 4.1 Numpy ndarray:多维数组对象 4.1.1 生成ndarray 4.1.2 ndarray的数据类型 4.1.3 Num…

    Python 2023年8月25日
    047
  • Python 网络爬虫:Scrapy-redis 的简单配置及初应用

    Python 网络爬虫:Scrapy-redis 的简单配置及初应用 文章目录 Python 网络爬虫:Scrapy-redis 的简单配置及初应用 前言 一、scrapy-red…

    Python 2023年10月4日
    041
  • (一)scrapy安装和基本使用

    1、Scrapy是什么Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。2、scrapy安装安装…

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