springboot layui hutool Excel导入的实现


Posted in Java/Android onMarch 31, 2022

一、导入依赖

(一)其他环境准备

首先前期根据需求需要搭建springboot+前端的框架,这个根据个人项目来,我是用的springboot+layui。这些不是这里讨论的重点。

(二)hutool和Excel导入

<!-- 基本依赖包 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.8</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.0.0</version>
</dependency>

必须推荐一波:

二、核心代码

(一)前端按钮

前端代码不是核心,只是为了一个思路

//①按钮
<button id="importData" class="layui-btn">导入</button>
//②//导入 用layui upload插件
    layui.use([ "element", "laypage", "layer", "upload"], function() {
        debugger;
        var element = layui.element;
        var laypage = layui.laypage;
        var layer = layui.layer;
        var upload = layui.upload;//主要是这个
        layui.upload.render({
            elem: "#importData",//导入id
            url: "/emp/importData",
            size: '3072',
            accept: "file",
            exts: 'xls|xlsx|xlsm|xlt|xltx|xltm',
            done: function (result) {
                if (result.status == 0) {
                    parent.layui.table.reload('LAY-app-emp-list');
                }
                if (result.message != null) {
                    parent.layui.table.reload('LAY-app-emp-list');
                    layer.msg(result.message)
                }
            }
        });
        // refreshTable()
    });

(二)后端代码

controller接口

@PostMapping(value = "/importData")
@ResponseBody
public CommonResult importData(@RequestParam MultipartFile file) {
    //调用service方法,这个地方通过MultipartFile参数就可以接收到上传的Excel文件内容了
    empService.importTemplate(file);
    return CommonResult.success("上传成功");
}

service实现类代码

说明:这里我们接收到file之后,通过hutool工具中的ExcelUtil工具帮我们解析文件,等到一行一行的数据,这个时候我们只需要映射到我们的实体类中。这里我只是写了一个EmpDO中的两个字段,如果业务复杂参考这两个字段来就行了。

@Override
public void importTemplate(MultipartFile file) {
    InputStream inputStream = null;
    try {
        inputStream = file.getInputStream();
    }catch (Exception e){
        logger.info("文件异常");
    }
    //指定输入流和sheet
    ExcelReader reader = ExcelUtil.getReader(inputStream, 0); 
    // 读取第二行到最后一行数据
    List<List<Object>> read = reader.read(1, reader.getRowCount());
    List<EmpDO> empDOS = new ArrayList<>();
    for (List<Object> objects : read) {
        EmpDO empDO = new EmpDO();
        //读取某行第一列数据
        Object sampleNo = objects.get(0);
        //读取某行第二列数据
        Object sampleName = objects.get(1);
        //员工id
        empDO.setEmpId(Integer.parseInt(sampleNo.toString()));
        //员工姓名
        empDO.setName(sampleName.toString());
        empDOS.add(empDO);
        //这里没有做数据插入到数据库的操作,我用的是mybatisplus
        System.out.println(empDO);
    }
}

三、测试

(一)文件准备:

springboot layui hutool Excel导入的实现

(二)选择导入文件

springboot layui hutool Excel导入的实现

(三)进入到业务处理

springboot layui hutool Excel导入的实现

 到此这篇关于springboot layui hutool Excel导入的实现的文章就介绍到这了,更多相关springboot layui hutool Excel导入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
Spring Bean的实例化之属性注入源码剖析过程
Jun 13 Java/Android
SpringCloud Alibaba 基本开发框架搭建过程
Jun 13 Java/Android
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
Spring Cloud Gateway去掉url前缀
Jul 15 Java/Android
springboot 启动如何排除某些bean的注入
Aug 02 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
Aug 07 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
Jan 18 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
springmvc直接不经过controller访问WEB-INF中的页面问题
Feb 24 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Springboot中如何自动转JSON输出
Jun 16 Java/Android
Java 多线程并发FutureTask
Jun 28 Java/Android
spring注解 @PropertySource配置数据源全流程
Mar 25 #Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 #Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Netty分布式客户端处理接入事件handle源码解析
Java 超详细讲解IO操作字节流与字符流
Netty分布式客户端接入流程初始化源码分析
Mar 25 #Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 #Java/Android
You might like
图象函数中的中文显示
2006/10/09 PHP
一个MYSQL操作类
2006/11/16 PHP
WINXP下apache+php4+mysql
2006/11/25 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
js分页工具实例
2015/01/28 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue 扩展现有组件的操作
2020/08/14 Javascript
python reduce 函数使用详解
2017/12/05 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
端午节活动总结
2014/08/26 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
php引用传递
2021/04/01 PHP
python实现进度条的多种实现
2021/04/29 Python
Golang表示枚举类型的详细讲解
2021/09/04 Golang