用hutool对Excel数据导入与导出

用hutool对Excel数据导入与导出

配置环境

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>

编写dao

@TableName("user")
@Data
@Repository
public class User {
    /**
     * @TableName("user") 对应数据库表名
     * id主键自增 @TableId(type = IdType.AUTO)
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    private String password;
    private String nickName;
    private Integer age;
    private String sex;
    private String address;

}

Excel数据导出

 @GetMapping("/download")
    public void download(HttpServletResponse response) throws Exception {
        //查询所有用户
        List<User> list= userService.list();
        //在内存操作,写到浏览器
        ExcelWriter writer= ExcelUtil.getWriter(true);
        //自定义标题别名
        writer.addHeaderAlias("username","用户名");
        writer.addHeaderAlias("password","密码");
        writer.addHeaderAlias("nickname","昵称");
        writer.addHeaderAlias("address","地址");

        //默认配置
        writer.write(list,true);
        //设置content—type
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");

        //设置标题
        String fileName= URLEncoder.encode("用户信息","UTF-8");
      
        //如何显示附加的文件。
        response.setHeader("ContentDisposition","attachment;filename="+fileName+".xlsx");
        ServletOutputStream outputStream= response.getOutputStream();

        //将Writer刷新到OutPut
        writer.flush(outputStream,true);
        outputStream.close();
        writer.close();

    }

然后在发送网页发送http://localhost:9090/user/download的get请求就可以,以附件形式下载Excel

Excel下载

Excel数据导入

然后我们想把Excel中的数据一起导入到数据库中在页面中显示

  @PostMapping("/importExcel")
    public Boolean importExcel(MultipartFile file) throws IOException {
        InputStream inputStream = file.getInputStream();
        ExcelReader reader = ExcelUtil.getReader(inputStream);
        List<User> list = reader.readAll(User.class);
        log.info(list.toString());
        userService.saveBatch(list);//插入数据
        return true;
    }

当我们将Excel文件以上面代码对发送post请求时
Excel表格
数据库添加的数据时,对于中文字段数据的不能添加进去
数据库数据

对于Excel表格中的中文字段名字不能匹配到

	 @PostMapping("/importExcel")
    public Boolean importExcel(MultipartFile file) throws IOException {
        InputStream inputStream = file.getInputStream();
        ExcelReader reader = ExcelUtil.getReader(inputStream);
        reader.addHeaderAlias("用户名","username");
        reader.addHeaderAlias("密码","password");
        reader.addHeaderAlias("昵称","nickname");
        reader.addHeaderAlias("地址","address");
        List<User> list = reader.readAll(User.class);
        System.out.println(list);
        userService.saveBatch(list);//插入数据
        return true;
    }
添加 reader.addHeaderAlias("昵称","nickname");方法与Excel表格字段名一一对应

在这里插入图片描述
数据就添加到数据库中了
这样子Excel数据导入与导出就完成了

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值