使用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>

二.代码

java 复制代码
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;
}
java 复制代码
 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));
        }
    }

测试类:

java 复制代码
        LocalDateTime startOfDay = LocalDate.now().atStartOfDay();
        // 结果集合
        List<User> excelList = new ArrayList<>();
        excelList.add(new User("1","张三",20,"zhangsan@163.com"));
        //写入excel
        writeExcel(excelList);
相关推荐
噢,我明白了8 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
REST_30279 小时前
告别Excel孤岛:一款任务链路可视化工具带来的真实改变
大数据·微服务·云计算·编辑器·excel·动态规划
蓝创工坊Blue Foundry16 小时前
多个同模板 PDF,怎样批量提取同一类字段到 Excel
运维·数据库·pdf·自动化·ocr·excel
蓝创工坊Blue Foundry2 天前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
用户298698530142 天前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
2501_930707782 天前
如何使用C#代码在 Excel 中编辑或删除批注
excel
SunnyDays10112 天前
Python Excel 切片器操作详解:自动创建智能交互式报表
python·excel·数据筛选·切片器
观远数据2 天前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel
蓝创工坊Blue Foundry3 天前
PDF 批量提取指定内容到 Excel:按字段整理多个 PDF 的方法
pdf·ocr·excel·文心一言·paddlepaddle·paddle
用户298698530143 天前
React 项目中灵活管理 Excel 工作表:增删与移动
javascript·react.js·excel