只有代码,解释较少,想看详细导入导出:

使用poi实现导出导入 详细解释

pom依赖:

基于springboot

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

 导出:

先从数据库中将所有的数据查询出来:调用mapper查询

在内存中,写在浏览器:

【直接下载】

ExcelWriter writer = ExcelUtil.getWriter(true);

自定义标题别名 : 可以不写【不写使用的是类中的属性名】

 writer.addHeaderAlias("属性","别名")

一次性将数据写入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);
writer.close();
out.close();

导入

@PostMapping("/down")
public boolean down(MultipartFile file) throws IOException {
    // 通过文件获取输入流
    InputStream is = file.getInputStream();
    // 借助hutool读取
    ExcelReader reader = ExcelUtil.getReader(is);
    List<List<Object>> list = reader.read(1); // 从第二行开始读
    // 创建一个List集合
    List<SysUser> users = CollUtil.newArrayList();
    // 遍历
    for (List<Object> row : list) {
        SysUser user = new SysUser();
        // 转换成字符串
        user.setUsername(row.get(1).toString());
        user.setPassword(row.get(2).toString());
        user.setNickname(row.get(3).toString());
        user.setEmail(row.get(4).toString());
        user.setPhone(row.get(5).toString());
        user.setAddress(row.get(6).toString());
        // 遍历完一个添加一个
        users.add(user);
    }
    // 调用mapper添加到数据库
    return userService.addAll(users);
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐