一:需求
客户提供一个word模板,根据模板加载数据生成word附件,很正常的一个需求,但就是有个难点,需要换行,详情往下看。
二:解决方式
1、模板示例
2、难点
这个需求的难点是议题。议题分为首席和列席还有请假。具体多少个议题也是不确定的,动态加载,每一个议题,议题下面的首席列席都得换行。如下:
首先,不能使用表格来做,其次如果使用一个标识符号进行替换填充,需要判断在每一个议题,首席,列席完毕都得需要换行。查了很多资料都是根据表格进行换行的,都不能解决这个问题,还有加\n\r这一类的都无法解决不了,所以把单独的这个字符串处理。进行换行。
代码如下:
package com.echo.word;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.poi.util.StringUtil;
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Hacah
* @className: templateToWord
* @description: TODO 类描述
* @date 2021/6/15 15:17
*/
public class TemplateToWord {
public static void main(String[] args) throws IOException {
// 替换文本数据构建
HashMap<String, String> insertTextMap = new HashMap<>(16);
insertTextMap.put("like", "睡觉觉");
insertTextMap.put("birthday", "你猜");
insertTextMap.put("sex", "男");
insertTextMap.put("name", "丹辉美文");
insertTextMap.put("age", "333")