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
发布评论