1.需求

导出用户信息,模板如下:

要求:导出多个用户信息时,另起一页,根据模板生成下一条用户信息。

2.模板变化

  • easypoi不能直接创建空白页(下一页),但可以使用apache的poi中的document.createParagraph().createRun().addBreak(BreakType.PAGE)来创建空白页(下一页)。
  • 根据需求需要将word总的表格动态生成多个表格,并且每个表格都需要新建空白页。例如:需要将4个user的信息导出,则模板需要变化成如下:

    然后通过easypoi使用变化后的模板导出word数据

3.具体代码如下

        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.4.0</version>
        </dependency>

3.1 复制模板

目的是将初始模板改变成第二章节中的模板

package com.lylp.office.utils;

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.afterturn.easypoi.word.WordExportUtil;
import com.lylp.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xwpf.usermodel.BreakType;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;

/**
 * word/excel导出工具类<br>
 * <a url="http://doc.wupaas/docs/easypoi">官网文档</a>
 */
@Slf4j
public class OfficeExportUtils {
   

    /**
     * 复制word中的表格
     * @param templatePath 源文件
     * @param targetPath 目标文件
     * @param varPrefix 变量前缀
     * @param copyNum 拷贝数量
     * @param isNewPage 是否新增页
     */
    public static void copyWordTable(String templatePath, String targetPath, String varPrefix, int copyNum, boolean isNewPage) {
   
        File targetFile = new