欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hutool工具类实现Excel的导入和导出

程序员文章站 2022-04-17 17:33:35
...

在工作中Excel的导入和导出应该算是简单的业务吧,之前有用原生的写过,使用Hutool工具类实现此功能还是第一次。官网地址:https://hutool.cn/docs/ 第一次接触的小伙伴们可以自行进行阅读,此博客只介绍在项目中的应用及自己踩到的坑,高手可以忽略,不喜勿喷!

导出Excel

​public void getComExcelService(HttpServletResponse response) {
​
    List<ZbComVo> mqSendTaskDTO = zbComMapper.selectZbProExcel();
        System.err.println(mqSendTaskDTO.toString());
        for(ZbComVo zcv:mqSendTaskDTO){
            if(zcv != null){
                ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true);

           
                writer.addHeaderAlias("comName", "企业名称");
                writer.addHeaderAlias("comQybm", "企业编码");
                writer.addHeaderAlias("comQyxz", "企业性质");
                writer.addHeaderAlias("comFrdb", "法人代表");
                writer.addHeaderAlias("comStszsf", "所在省份");
                writer.addHeaderAlias("comZz", "资质");
                writer.addHeaderAlias("comWz", "违章");
                writer.addHeaderAlias("comLxdw", "联系单位");
                writer.addHeaderAlias("comZxdz", "注册地址");
               
                writer.write(mqSendTaskDTO, true);

                writer.autoSizeColumnAll();

                response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
                response.setHeader("Content-Disposition","attachment;filename="+ UUID.randomUUID().toString().replace("-","")+ ".xlsx");

                ServletOutputStream out= null;
                try {
                    out = response.getOutputStream();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                writer.flush(out, true);
                // 关闭writer,释放内存
                writer.close();
                //此处记得关闭输出Servlet流
                IoUtil.close(out);
            }
        }

    }

​

​

说明:

1.首先调用dao层方法,得到需要导出的实体集合。

2. 细心的朋友已经发现,我这里用到的是实体的包装类ZbComVo,这也是需要注意的地方。这里需要创建一个实体,只返回Excel中需要导出的字段,实体进行序列化就可以了(在测试过程中发现如果返回的实体中包含了其他字段,那Excel中就会显示空。测试的时候很是尴尬,如果有遇到类似问题的欢迎提出宝贵的解决办法)。

3.可以自定义表格样式,详情可参考官方文档。最后注意关闭流。

如此就实现了Excel的导出!!!

Excel的导入

Hutool工具类实现Excel的导入和导出

public List<ZbComVo> getZbComExcelService(InputStream inputStream) {
        ExcelReader writer = cn.hutool.poi.excel.ExcelUtil.getReader(inputStream);
        writer.addHeaderAlias("企业名称", "comName");
        writer.addHeaderAlias("企业编码","comQybm");
        writer.addHeaderAlias("企业性质","comQyxz");
        writer.addHeaderAlias("法人代表","comFrdb");
        writer.addHeaderAlias("所在省份","comStszsf");
        writer.addHeaderAlias("资质","comZz");
        writer.addHeaderAlias("违章","comWz");
        writer.addHeaderAlias("联系单位","comLxdw");
        writer.addHeaderAlias("注册地址","comZxdz");
       

        List<ZbComVo> zbComs = writer.readAll(ZbComVo.class);
        System.out.println(zbComs.toString());
       return zbComs;
    }

说明:

导入和导出除了上面所说的注意事项,还要注意的是在导入时Hutool工具类实现Excel的导入和导出,这刚好和导出是相反的操作吧(说法不太准确),如此便实现了Excel的导入和导出。在使用Hutool工具类实现Excel的导入和导出时,如果有遇到其它问题,欢迎留言探讨。。。

相关标签: 开源工具包