当前位置: 首页 > article >正文

使用hutools 生成excel

一.引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

二.代码

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class User {

    
    @ApiModelProperty(value = "用户ID")
    private String id;
    
    @ApiModelProperty(value = "用户名称")
    private String name;
    
    @ApiModelProperty(value = "用户年龄")
    private Integer age;
    
    @ApiModelProperty(value = "用户邮箱")
    private String email;
}
 private void writeExcel(List<CarVdnEntity> excelList) {
        log.info("CarVdnServiceImpl.writeExcel.excelList.size:", excelList.size());
        LinkedList<String> headerList = new LinkedList<>();
        //生成文件路径 windows 环境可以写成("D://file//")
        ExcelWriter writer = ExcelUtil.getWriter("GBOM-" + (LocalDate.now().toString()));
        addHeaderAlias(writer, headerList);
        writer.writeHeadRow(headerList);
        //一次性写出内容,强制输出标题
        writer.write(excelList);
        //关闭writer,释放内存
        writer.close();
    }

    private static String convertToUnderscore(String camelCase) {
        // 使用正则表达式将大写字母前面添加下划线,并转换为小写
        String underscore = camelCase.replaceAll("([A-Z])", "_$1").toLowerCase();
        // 如果开头有下划线,则去除开头的下划线
        if (underscore.startsWith("_")) {
            underscore = underscore.substring(1);
        }
        return underscore;
    }

    private static void addHeaderAlias(ExcelWriter writer, LinkedList<String> header) {
        Class<?> clazz = User.class;
        Field[] fields = clazz.getDeclaredFields();
        // 遍历字段数组,获取每个字段的名称并添加到列表中
        for (Field field : fields) {
            String fieldName = field.getName();
            header.add(convertToUnderscore(fieldName));
            writer.addHeaderAlias(fieldName, convertToUnderscore(fieldName));
        }
    }

 测试类:

        LocalDateTime startOfDay = LocalDate.now().atStartOfDay();
        // 结果集合
        List<User> excelList = new ArrayList<>();
        excelList.add(new User("1","张三",20,"zhangsan@163.com"));
        //写入excel
        writeExcel(excelList);


http://www.kler.cn/a/507081.html

相关文章:

  • Kafka常用命令
  • nginx 的基础语法学习,零基础学习
  • linux系统监视(centos 7)
  • 《鸿蒙Next微内核:解锁人工智能决策树并行计算的加速密码》
  • 内存与缓存:保姆级图文详解
  • [系统安全] 六十一.恶意软件分析 (12)LLM赋能Lark工具提取XLM代码的抽象语法树(初探)
  • Python学习(三)基础入门(数据类型、变量、条件判断、模式匹配、循环)
  • keepalived双机热备(LVS+keepalived)实验笔记
  • 联通用户管理系统(一)
  • LeetCode 1773. 统计匹配检索规则的物品数量
  • 【docker踩坑记录】
  • @Scope(“prototype“)
  • 网络安全面试题汇总(个人经验)
  • 安装 Docker GPU 版本的过程及遇到的坑
  • ubuntu开机自启某个应用
  • 《机器学习》自然语言处理之TF-IDF
  • 实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
  • 新质生产力与数字化转型
  • 【Go】Go数据类型详解—数组与切片
  • mac 安装 node
  • 需求驱动的具身导航!DDN:基于用户需求的目标导航任务
  • 镭速大文件传输视频文件预览实现原理
  • Oracle保留小数点后两位
  • 基于FPGA的多功能数字钟设计
  • 获取当前页面的url相关信息
  • 万物互联的背后:MCU嵌入式硬件的奇幻之旅