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
        );
相关推荐
JunLan~3 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
方竞4 小时前
Linux空口抓包方法
linux·空口抓包
海岛日记5 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin5 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
n***85946 小时前
嵌入式 UI 开发的开源项目推荐
windows·开源·开源软件
小袁搬码6 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
学Linux的语莫7 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
踏雪Vernon7 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫7 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器