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
        );
相关推荐
fTiN CAPA10 小时前
Linux系统离线部署MySQL详细教程(带每步骤图文教程)
linux·mysql·adb
陈eaten11 小时前
windows上协调多版本python以及虚拟环境
开发语言·windows·python·pycharm·pip·虚拟环境·py
MandalaO_O11 小时前
Java List 集合介绍
windows
E_ICEBLUE11 小时前
如何提取 Word 文档中的表格并导出为 Excel(Python 教程)
python·word·excel
xlq2232211 小时前
52.TcpSocket
linux·服务器·网络
сокол11 小时前
【网安-Web渗透测试-内网渗透】内网横向移动——IPC连接
服务器·windows·网络安全·系统安全
剑神一笑11 小时前
Linux xargs 命令深度解析:从管道到命令构建的桥梁
linux·运维·chrome
BUG研究员_12 小时前
Apifox调用本地大模型
windows
无限进步_12 小时前
【C++】从红黑树到 map 和 set:封装设计与迭代器实现
开发语言·数据结构·数据库·c++·windows·github·visual studio
xhbh66612 小时前
Windows网络转发如何配置?netsh命令完整指南
服务器·网络·windows·ip·端口流量转发·路由端口转发·ip隐藏