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

EasyExcel 实践案例:打印工资条

文章目录

    • 🎯 1. 每个人一个 Excel 文件(单个对象填充)
    • 🎯 2. 每个人一个 Sheet(批量生成工资单)
    • 🎯 3. 一张工资表,多个员工(列表数据填充)
    • 📌 总结
      • ✅ 最佳实践

打印工资条时,每个人的工资条是 一个独立的 Sheet一个独立的 Excel 文件,具体占位符用法取决于你如何填充数据:


🎯 1. 每个人一个 Excel 文件(单个对象填充)

适用于:给每个员工生成 单独的 Excel 文件,比如 工资单.pdf、工资单.xlsx 等。

占位符格式{字段名}(不用加 .

📌 Excel 模板

员工姓名工资奖金
{name}{salary}{bonus}

📌 Java 代码

List<Employee> employees = List.of(
    new Employee("张三", 10000, 2000),
    new Employee("李四", 12000, 2500)
);

for (Employee emp : employees) {
    String fileName = emp.getName() + "_工资单.xlsx";
    
    Map<String, Object> data = new HashMap<>();
    data.put("name", emp.getName());
    data.put("salary", emp.getSalary());
    data.put("bonus", emp.getBonus());

    ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate("salary_template.xlsx").build();
    WriteSheet writeSheet = EasyExcel.writerSheet().build();
    excelWriter.fill(data, writeSheet);
    excelWriter.finish();
}

这里用 {name},因为 data.put("name", "张三") 是一个 Map


🎯 2. 每个人一个 Sheet(批量生成工资单)

适用于:一个 Excel 文件,每个员工一个 Sheet,比如 “2024年1月工资.xlsx”。

占位符格式{字段名}(不用加 .

📌 Java 代码

String fileName = "2024年1月工资.xlsx";
List<Employee> employees = List.of(
    new Employee("张三", 10000, 2000),
    new Employee("李四", 12000, 2500)
);

ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate("salary_template.xlsx").build();

for (Employee emp : employees) {
    Map<String, Object> data = new HashMap<>();
    data.put("name", emp.getName());
    data.put("salary", emp.getSalary());
    data.put("bonus", emp.getBonus());

    WriteSheet writeSheet = EasyExcel.writerSheet(emp.getName() + "的工资单").build();
    excelWriter.fill(data, writeSheet);
}

excelWriter.finish();

这里 writeSheet() 指定了不同的 Sheet 名,每个人都有一个单独的工资单。


🎯 3. 一张工资表,多个员工(列表数据填充)

适用于:在 同一个 Sheet 里显示多个员工工资信息(类似公司 HR 用的总表)。

占位符格式{.字段}(加 .

📌 Excel 模板

姓名工资奖金
{.name}{.salary}{.bonus}

📌 Java 代码

String fileName = "工资表.xlsx";
List<Employee> employees = List.of(
    new Employee("张三", 10000, 2000),
    new Employee("李四", 12000, 2500)
);

ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate("salary_template.xlsx").build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
excelWriter.fill(employees, writeSheet);
excelWriter.finish();

这里用 {.name},因为 fill() 传的是 List<Employee>,EasyExcel 需要用 . 来解析列表数据。


📌 总结

场景占位符格式填充方式
每个人一个 Excel 文件{字段}(无 .fill(Map)
每个人一个 Sheet{字段}(无 .fill(Map)
一个 Sheet,多个员工{.字段}(有 .fill(List<T>)

✅ 最佳实践

  • 单个对象填充(一个人一张工资单) 👉 用 {字段}(无 .
  • 列表数据填充(工资表) 👉 用 {.字段}(有 .

这样,你就能正确地生成工资单啦!🚀

知识不扎实的可以回顾一下哦:EasyExcel 使用指南


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

相关文章:

  • 【NLP 38、激活函数 ④ GELU激活函数】
  • Deepseek引爆AI热潮 防静电地板如何守护数据中心安全
  • 卸载Mysql重装(升级版本)
  • UE5网络通信架构解析
  • ubuntu+aarch64+dbeaver安装【亲测,避坑】
  • 基于 Python 的项目管理系统开发
  • db.session.delete是什么意思
  • 【R包】tidyplots----取代ggplot2的科研绘图利器
  • pytest-html
  • TMDS视频编解码算法
  • git 命令 设置别名
  • 《操作系统 - 清华大学》 8 -8:进程管理:为什么使用线程
  • 【Python爬虫(63)】从0到1:打造图片与视频爬虫攻略
  • 【java】implements
  • 原子操作、写回策略、缓存一致性问题、内存序详解
  • Vue面试2
  • 三、《重学设计模式》-单例模式
  • Python - 代码片段分享 - Excel 数据实时写入方法
  • uniapp打包生产证书上架IOS全流程
  • 【PDF预览】使用iframe实现pdf文件预览,加盖章