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 相关文章推荐
详解java如何集成swagger组件
Jun 21 Java/Android
Java org.w3c.dom.Document 类方法引用报错
Aug 07 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
Java 实现限流器处理Rest接口请求详解流程
Nov 02 Java/Android
java协程框架quasar和kotlin中的协程对比分析
Feb 24 Java/Android
Spring Boot项目传参校验的最佳实践指南
Apr 05 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
Android 中的类文件和类加载器详情
Jun 05 Java/Android
Java完整实现记事本代码
Jun 16 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
HttpClient实现表单提交上传文件
Aug 14 Java/Android
Android移动应用开发指南之六种布局详解
Sep 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP利用str_replace防注入的方法
2013/11/10 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php格式文件打开的四种方法
2018/02/24 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
vue 子组件修改data或调用操作
2020/08/07 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
网络体系结构及协议的定义
2014/03/13 面试题
成功的餐厅经营创业计划书
2014/01/15 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
人事任命书范本
2015/09/21 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python