hutool ExcelUtil 导出导入excel

引入依赖

xml 复制代码
  <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.8.15</version>
        </dependency>

文件导入

java 复制代码
public void savelist(
            String filepath,
            String keyname
    ){
        ExcelReader reader = ExcelUtil.getReader(FileUtil.file(filepath), 0);
        List<Map<String, Object>> sheetRowsMap = reader.readAll();

        String host = "192.168.1.80";
        int port = 6379;
        Jedis jedis = new  Jedis(host, port);
        for (Map<String, Object> stringObjectMap : sheetRowsMap) {
            TemplateVo vo =  JwfsStdPopRealPopNewTemplateVo.builder()
                    .addressDetail(String.valueOf(stringObjectMap.get("户籍地址(校验后)")))
                    .popName(String.valueOf(stringObjectMap.get("姓名")))
                    .popPhone(String.valueOf(stringObjectMap.get("电话")))
                    .build();
                    log.info(vo);
        }
    }

文件导出

java 复制代码
 public static void export(List<JwfsStdPopRealPopNewTemplateVo> data, String path, String fileName, JwfsStdPopRealPopNewTemplateVo excelData) throws IOException {
        log.info("开始导出");
        ExcelWriter writer = ExcelUtil.getWriter();
        List<Map> fieldAnnotation = getFieldAnnotation(excelData);
        for(Map<String,String> map:fieldAnnotation){
            for(String key:map.keySet()){
                String value = map.get(key);
                writer.addHeaderAlias(key,value);
            }
        }

        //第1列40px宽
        //writer.setColumnWidth(0, 40);
        //第2列15px 宽
        //writer.setColumnWidth(1, 15);



        //对齐方式,水平左对齐,垂直中间对齐
        writer.getStyleSet().setAlign(HorizontalAlignment.LEFT, VerticalAlignment.CENTER);

        //标题样式
        CellStyle headCellStyle = writer.getHeadCellStyle();
        //设置背景色
        headCellStyle.setFillForegroundColor(IndexedColors.WHITE1.getIndex());
        //必须设置 否则背景色不生效
        headCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        //创建标题字体
        Font headFont = writer.createFont();
        headFont.setFontName("宋体");
        //大小
        headFont.setFontHeightInPoints((short) 11);
        //加粗
        headFont.setBold(true);
        headCellStyle.setFont(headFont);

        writer.setColumnWidth(-1, 30);
        writer.setRowHeight(-1,20);


        //保存路径
        FileOutputStream output = new FileOutputStream(path+fileName+".xls");
        // 一次性写出内容
        writer.write(data);

        //自适应列宽
        int columnCount = writer.getColumnCount();
        for (int i = 0; i < columnCount; ++i) {
            double width = SheetUtil.getColumnWidth(writer.getSheet(), i, false);
            if (width != -1.0D) {
                width *= 256.0D;
                //此处可以适当调整,调整列空白处宽度
                width += 220D;
                writer.setColumnWidth(i, Math.toIntExact(Math.round(width / 256D)));
            }
        }

        writer.flush(output,true);
        // 关闭writer,释放内存
        writer.close();
    }


   JwfsStdPopRealPopNewTemplateVo jwfsStdPopRealPopNewTemplateVo = JwfsStdPopRealPopNewTemplateVo.builder().build();
        export(
                list,
                "C:\\Users\\Administrator\\Desktop\\1\\",
                filename,
                jwfsStdPopRealPopNewTemplateVo
        );
相关推荐
十日十行10 小时前
Linux和window共享文件夹
linux
木心月转码ing17 小时前
WSL+Cpp开发环境配置
linux
埃博拉酱2 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
唐宋元明清21882 天前
.NET 本地Db数据库-技术方案选型
windows·c#