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 相关文章推荐
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
新手初学Java List 接口
Jul 07 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
java如何实现socket连接方法封装
Sep 25 Java/Android
Springboot如何同时装配两个相同类型数据库
Nov 17 Java/Android
Java使用JMeter进行高并发测试
Nov 23 Java/Android
Java实现经典游戏泡泡堂的示例代码
Apr 04 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
Springboot中如何自动转JSON输出
Jun 16 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
Jun 16 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 Java/Android
IDEA中sout快捷键无效问题的解决方法
Jul 23 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
php表单请求获得数据求和示例
2014/05/15 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
理解JS事件循环
2016/01/07 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
小程序实现录音功能
2020/09/22 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
python通过ssh-powershell监控windows的方法
2015/06/02 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
公司成立感言
2014/01/11 职场文书
创业计划书如何编写
2014/02/06 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
简单介绍Python的第三方库yaml
2021/06/18 Python