使用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常用JVM参数实战

    Java常用JVM参数实战

    本文主要介绍了Java常用JVM参数实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Java单例的写法详解

    Java单例的写法详解

    在java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点。需要的朋友可以参考下
    2021-09-09
  • Kryo框架使用方法代码示例

    Kryo框架使用方法代码示例

    这篇文章主要介绍了Kryo框架的相关内容,文中向大家分享了Kryo框架使用方法代码示例,小编觉得挺不错的,希望能给大家一个参考。
    2017-10-10
  • 在SpringBoot中使用YourKit进行性能调优的教程详解

    在SpringBoot中使用YourKit进行性能调优的教程详解

    在应用程序的开发过程中,性能调优是一个重要的环节,在SpringBoot应用程序中,我们可以使用YourKit来进行性能调优,YourKit是一款非常强大的Java性能调优工具,在本文中,我们将介绍如何在 SpringBoot应用程序中使用YourKit进行性能调优
    2023-06-06
  • java中如何停止一个正在运行的线程

    java中如何停止一个正在运行的线程

    文章介绍了三种停止正在运行线程的方法:设置标志位、利用中断标志位和利用InterruptedException异常,这些方法可以帮助我们有效地控制线程的执行
    2025-01-01
  • 深入了解JVM(Java虚拟机)内存结构

    深入了解JVM(Java虚拟机)内存结构

    Java虚拟机(Java Virtual Machine,JVM)是Java程序的运行环境,它是一个抽象的计算机模型,通过解释和执行Java字节码来运行Java程序,本将大家深入了解JVM(Java虚拟机)内存结构,需要的朋友可以参考下
    2023-08-08
  • 深入浅析Mybatis与Hibernate的区别与用途

    深入浅析Mybatis与Hibernate的区别与用途

    这篇文章主要介绍了Mybatis与Hibernate的区别与用途的相关资料,需要的朋友可以参考下
    2017-10-10
  • Java中验证 Mybatis 数据分片可以减轻GC压力的操作方法

    Java中验证 Mybatis 数据分片可以减轻GC压力的操作方法

    这篇文章主要介绍了Java中验证 Mybatis 数据分片可以减轻GC压力的操作方法,本文使用 Spock(可集成Spring Boot项目) 编写测试用例,基于 Groovy (JVM语言),感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • java如何判断时间段是否交叉重叠

    java如何判断时间段是否交叉重叠

    这篇文章主要介绍了java如何判断时间段是否交叉重叠问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • IDEA中创建maven项目webapp目录无法识别即未被标识的解决办法

    IDEA中创建maven项目webapp目录无法识别即未被标识的解决办法

    在学习SpringMVC课程中,基于IDEA新建maven项目模块后,webapp目录未被标识,即没有小蓝点的图标显示,所以本文给大家介绍了IDEA中创建maven项目webapp目录无法识别即未被标识的解决办法,需要的朋友可以参考下
    2024-03-03

最新评论