poi根据模板导出word

本文介绍了如何使用Java的POI库处理一个需求:根据客户提供的Word模板,动态加载数据并生成带有换行的Word附件。难点在于处理不确定数量的议题,每个议题下首席和列席需要换行,且不能使用表格实现。通过特殊字符替换和字符串处理实现了换行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:需求

客户提供一个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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值