EasyPoi 使用$fe:模板语法生成Word动态行

1 Maven 依赖

html 复制代码
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.0.0</version>
</dependency> 

2 application.yml

html 复制代码
spring:
  main:
    allow-bean-definition-overriding: true

3 测试代码

java 复制代码
package com.xudongbase.poi.easypoi;

import cn.afterturn.easypoi.word.WordExportUtil;
import cn.afterturn.easypoi.word.entity.MyXWPFDocument;
import cn.hutool.core.io.resource.ClassPathResource;
import com.xudongbase.common.util.FileUtil;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SpringBootTest
public class WordTemplateTest {
    /**
     * 测试替换内容和动态行
     */
    @Test
    public void test() {
        try {
            //读文件
            ClassPathResource classPathResource = new ClassPathResource("/doc/word/EasyPoiWordTemplate.docx");
            File file = new File("D:/word/EasyPoiWordTemplateAfter.docx");
            XWPFDocument document = new MyXWPFDocument(classPathResource.getStream());
            Map<String, Object> contentMap = new HashMap<>();
            contentMap.put("xudongmaster1", "旭东怪1");
            contentMap.put("xudongmaster2", "旭东怪2");
            FileUtil.createNewFile(file);
            List<Map<String, Object>> tableDataList = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                Map<String, Object> rowMap = new HashMap<>();
                rowMap.put("test", "测试" + i);
                rowMap.put("name", "名称" + i);
                tableDataList.add(rowMap);
            }
            contentMap.put("tableDataList", tableDataList);
            WordExportUtil.exportWord07(document, contentMap);
            //复制前两行
            document.write(new FileOutputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4 模板

5 测试结果

注:

完整代码示例请前往 Gitee 查看 xudongbase 项目的 easypoi 分支。

xudongbase: 主要是项目中可以用到的共通方法,现有easyexcel分支在持续更新中。欢迎大家Star和提交Issues。easyexcel分支:批量设置样式,批量添加批注,批量合并单元格,设置冻结行和列,设置行高列宽,隐藏行和列,绑定下拉框数据,设置水印,插入图片 - Gitee.com

相关推荐
冷雨夜中漫步1 分钟前
Claude Code源码分析——Claude Code Agent Loop 详细设计文档
java·开发语言·人工智能·ai
直奔標竿6 分钟前
Java开发者AI转型第二十六课!Spring AI 个人知识库实战(五)——联网搜索增强实战
java·开发语言·人工智能·spring boot·后端·spring
山楂树の44 分钟前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
本山德彪1 小时前
我做了一个拼豆图纸生成器,把照片秒变图纸
前端
one_love_zfl1 小时前
java面试-微服务组件篇
java·微服务·面试
一只大袋鼠1 小时前
Java进阶:CGLIB动态代理解析
java·开发语言
环流_1 小时前
HTTP 协议的基本格式
java·网络协议·http
爱滑雪的码农1 小时前
Java基础十三:Java中的继承、重写(Override)与重载(Overload)详解
java·开发语言
【 】4231 小时前
C++&STL(Standard Template Library,标准模板库)
java·开发语言·c++
茉莉玫瑰花茶1 小时前
LangChain 核心组件 [ 2 ]
java·数据库·langchain