当前位置: 首页 > news >正文

使用 hutool工具实现导入导出功能。

hutool工具网址

Hutool参考文档

pom依赖

 <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>

导出接口

实体类属性加上@Alias注解,加上这个注解导入文件时表头是中文的也可以。

用法:@Alias("用户名")

以下代码中有些注释掉的代码是其他的用法,@Alias注解这个方法比较方便,可能还有更好的方法大家自行探索。

user.java

package com.qing.springboot.entity;import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;import java.io.Serializable;
import java.time.LocalDateTime;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** <p>** </p>** @author Dong* @since 2024-07-20*/
@Data
@TableName("sys_user" )
@ApiModel(value = "User对象", description = "" )
public class User implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty("id" )@TableId(value = "id", type = IdType.AUTO)@Alias("id")private Integer id;@ApiModelProperty("用户名" )@Alias("用户名")private String username;@ApiModelProperty("密码" )@Alias("密码")private String password;@ApiModelProperty("昵称" )@Alias("昵称")private String nickname;@ApiModelProperty("邮箱" )@Alias("邮箱")private String email;@ApiModelProperty("电话" )@Alias("电话")private String phone;@ApiModelProperty("地址" )@Alias("地址")private String address;@ApiModelProperty("创建时间" )@Alias("创建时间")private LocalDateTime createTime;@ApiModelProperty("头像" )@Alias("头像")private String avatarUrl;}

 UserController.java

 /*** 导出接口*/@GetMapping("/export")public void export(HttpServletResponse response) throws Exception {// 从数据库查询出所有的数据List<User> list = userService.list();// 通过工具类创建writer 写出到磁盘路径
//        ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath + "/用户信息.xlsx");// 在内存操作,写出到浏览器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.addHeaderAlias("avatarUrl", "头像");// 一次性写出list内的对象到excel,使用默认样式,强制输出标题writer.write(list, true);// 设置浏览器响应的格式response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");String fileName = URLEncoder.encode("用户信息", "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");ServletOutputStream out = response.getOutputStream();writer.flush(out, true);out.close();writer.close();}

导入接口

  /*** excel 导入* @param file* @throws Exception*/@PostMapping("/import")public Boolean imp(MultipartFile file) throws Exception {InputStream inputStream = file.getInputStream();ExcelReader reader = ExcelUtil.getReader(inputStream);
//   方式1:(推荐) 通过 javabean的方式读取Excel内的对象,但是要求表头必须是英文(使用@Alias则中文的也可以),跟javabean的属性要对应起来
//        reader.addHeaderAlias("username", "用户名");
//        reader.addHeaderAlias("password", "密码");
//        reader.addHeaderAlias("nickname", "昵称");
//        reader.addHeaderAlias("email", "邮箱");
//        reader.addHeaderAlias("phone", "电话");
//        reader.addHeaderAlias("address", "地址");
//        reader.addHeaderAlias("createTime", "创建时间");
//        reader.addHeaderAlias("avatarUrl", "头像");List<User> list = reader.readAll(User.class);userService.saveBatch(list);// 方式2:忽略表头的中文,直接读取表的内容
//        List<List<Object>> list = reader.read(1);
//        List<User> users = 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.setEmail(row.get(3).toString());
//            user.setPhone(row.get(4).toString());
//            user.setAddress(row.get(5).toString());
//            user.setAvatarUrl(row.get(6).toString());
//            users.add(user);
//        }
//        userService.saveBatch(users);return true;}

Vue上传文件

Vue中上传文件可以用element ui组件的组件。

vue导出

<el-button type="primary" @click="exp" class="ml-5">导出 <i class="el-icon-top"></i></el-button>exp() {window.open("http://localhost:9090/user/export")
}

vue导入

<el-upload action="http://localhost:9090/user/import" :show-file-list="false" accept="xlsx" :on-success="handleExcelImportSuccess" style="display: inline-block"><el-button type="primary" class="ml-5">导入 <i class="el-icon-bottom"></i></el-button>
</el-upload>handleExcelImportSuccess() {this.$message.success("导入成功")this.load()
}

http://www.lryc.cn/news/404623.html

相关文章:

  • 大语言模型-Transformer-Attention Is All You Need
  • spring(二)
  • MAC 数据恢复软件: STELLAR Data Recovery For MAC V. 12.1 更多增强功能
  • 初识godot游戏引擎并安装
  • Windows配置Qt+VLC
  • 本地部署 mistralai/Mistral-Nemo-Instruct-2407
  • 2月科研——arcgis计算植被差异
  • 深入理解Android中的缓存与文件存储目录
  • Linux_生产消费者模型
  • 【Vue】`v-if` 指令详解:条件渲染的高效实现
  • junit mockito Base基类
  • 朋友圈运营分享干货2
  • linux中创建一个名为“thread1“,堆栈大小为1024,优先级为2的线程
  • 架构以及架构中的组件
  • Docker启动PostgreSql并设置时间与主机同步
  • 提升无线网络安全:用Python脚本发现并修复WiFi安全问题
  • #三元运算符(python/java/c)
  • 探索Python自然语言处理的新篇章:jionlp库介绍
  • Deepin系统,中盛科技温湿度模块读温度纯c程序(备份)
  • 文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]
  • 学习计划2024下半年
  • RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用
  • AI批量剪辑,批量发布大模型矩阵系统搭建开发
  • SpringMVC源码深度解析(中)
  • Mojo模型动态批处理:智能预测的终极武器
  • 人、智能、机器人……
  • SpringCloud------Sentinel(微服务保护)
  • 【无标题】Elasticsearch for windows
  • Yolo-World网络模型结构及原理分析(一)——YOLO检测器
  • WEB前端06-BOM对象