使用hutool工具进行导入导出excel表格

 更新时间:2023年10月31日 09:29:32   作者:Java|小白  
如何在后台添加导入导出表格的功能呢,本期的文章将会带领小伙伴们一起实现此功能,文中有详细的代码示例和图文介绍,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

如何在后台添加导入导出表格的功能呢,本期的文章将会带领小伙伴们一起实现此功能

1.先引入hutool的相关依赖

 <!--hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.20</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

2.导出 

创建一个Controller进行测试 

  //表格导出接口
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        //查询所有用户
        List<User> list= userService.list();
        //在内存操作,写到浏览器
        ExcelWriter writer= ExcelUtil.getWriter(true);
 
        //自定义标题别名
        writer.addHeaderAlias("username","用户名");
        writer.addHeaderAlias("password","密码");
        writer.addHeaderAlias("nickname","昵称");
        writer.addHeaderAlias("email","邮箱");
        writer.addHeaderAlias("phone","电话");
        writer.addHeaderAlias("address","地址");
        writer.addHeaderAlias("createTime","创建时间");
 
        //默认配置
        writer.write(list,true);
        //设置content—type
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
 
        //设置标题
        String fileName= URLEncoder.encode("用户信息","UTF-8");
        //Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。
        response.setHeader("Content-Disposition","attachment;filename="+fileName+".xlsx");
        ServletOutputStream outputStream= response.getOutputStream();
 
        //将Writer刷新到OutPut
        writer.flush(outputStream,true);
        outputStream.close();
        writer.close();
    }

测试结果如下

Vue前端使用这个代码进行访问即可

  //点击函数exp, 导出表格
            exp(){
                window.open("http://localhost:9090/user/export")
            }

3.导入

创建一个Controller进行测试 

因为我前面导出设置了别名,所以这里我选择用第二种方式,

接下来可以去postman验证是否能实现功能

/**
     * 导入excel
     * @param file
     */
    @PostMapping("/import")
    public void importExcel(MultipartFile file) throws IOException {
        //1.第一种 头必须和实体(英文)一样
        //文件处理成io流
        InputStream in = file.getInputStream();
//        //io流给ExcelReader
        ExcelReader excelReader=ExcelUtil.getReader(in);
//        //读取数据且转化为list
//        List<User> list = excelReader.readAll(User.class);
 
        //2.第二种导入方式
        //忽略第一行头(第一行是中文的情况),直接读取表的内容
        List<List<Object>> list = excelReader.read(1);
        List<User> listUser = CollUtil.newArrayList();
        for (List<Object> row: list) {
            User user=new User();
            user.setUsername(row.get(0).toString());
            user.setPassword(row.get(1).toString());
            user.setNickname(row.get(2).toString());
            user.setNickname(row.get(3).toString());
            user.setPhone(row.get(4).toString());
            user.setAddress(row.get(5).toString());
            listUser.add(user);
//            ****类似一一对应****
        }
        //批量注册进数据库
        userService.saveBatch(listUser);
    }

前端的话我是用的elemen-ui

      <el-upload action="http://localhost:9090/user/import"  
                    :show-file-list="false" accept="xlsx" 
                    :on-success="handleImportSuccess" 
                    style="display: inline-block;margin-right: 5px">
           <el-button type="primary">导入 <i class="el-icon-bottom"></i></el-button>
      </el-upload>

on-success是一个钩子函数,弹了一个插入成功的信息跟刷新页面的操作

//导入,钩子函数进行页面的提示跟成功后页面的刷新
            handleImportSuccess(){
                this.$message.success("导入成功")
                this.load();
            }

4.效果图

以上就是使用hutool工具进行导入导出excel表格的详细内容,更多关于hutool导入导出excel表格的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现Excel转PDF的完整方案分享

    Java实现Excel转PDF的完整方案分享

    在企业数据报表场景中,Excel转PDF是实现文档安全分发的刚需,本文主要和大家分享了如何使用Java自动化实现该流程,需要的小伙伴可以参考一下
    2025-08-08
  • Java时间转换成unix时间戳的方法

    Java时间转换成unix时间戳的方法

    这篇文章主要为大家详细介绍了Java时间转换成unix时间戳的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • SpringBoot中实现Redis缓存预热

    SpringBoot中实现Redis缓存预热

    缓存预热是一种在系统启动后,但在实际使用前将数据加载到缓存中的技术,本文主要来和大家一起探讨如何在Spring Boot应用程序中实现Redis缓存预热,以确保系统在处理请求前就已经处于最佳状态,感兴趣的可以了解下
    2023-11-11
  • 完美解决springboot中使用mybatis字段不能进行自动映射的问题

    完美解决springboot中使用mybatis字段不能进行自动映射的问题

    今天在springboot中使用mybatis的时候不能字段不能够进行自动映射,接下来给大家给带来了完美解决springboot中使用mybatis字段不能进行自动映射的问题,需要的朋友可以参考下
    2023-05-05
  • 详解Java如何优雅地书写if-else

    详解Java如何优雅地书写if-else

    在日常开发中我们常常遇到有多个if else的情况,之间书写显得代码冗余难看,对于追求更高质量代码的同学,就会思考如何优雅地处理这种代码。本文我们就来探讨下几种优化if else的方法
    2022-08-08
  • Java通过正则表达式获取字符串中数字的方法示例

    Java通过正则表达式获取字符串中数字的方法示例

    最近工作中遇到了一个需求,需要利用java获取字符串中的数字,尝试几种方法后发现利用正则表达式实现最为方法,下面这篇文章就主要介绍了Java通过正则表达式获取字符串中数字的方法,文中给出了详细的示例代码,需要的朋友可以参考下。
    2017-03-03
  • logstash将mysql数据同步到elasticsearch方法详解

    logstash将mysql数据同步到elasticsearch方法详解

    这篇文章主要为大家介绍了logstash将mysql数据同步到elasticsearch方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • SpringBoot 3.0 新特性内置声明式HTTP客户端实例详解

    SpringBoot 3.0 新特性内置声明式HTTP客户端实例详解

    声明式 http 客户端主旨是使得编写 java http 客户端更容易,为了贯彻这个理念,采用了通过处理注解来自动生成请求的方式,本文给大家详解介绍SpringBoot 声明式HTTP客户端相关知识,感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • SpringBoot整合flyway实现步骤解析

    SpringBoot整合flyway实现步骤解析

    这篇文章主要介绍了SpringBoot整合flyway实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java识别一篇文章中某单词出现个数的方法

    java识别一篇文章中某单词出现个数的方法

    这篇文章主要介绍了java识别一篇文章中某单词出现个数的方法,涉及java字符解析操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10

最新评论