Java操作word模板插入多种编号的列表

来源:互联网 发布:手机拍摄淘宝照片 编辑:程序博客网 时间:2024/06/05 15:33

Java操作Word模板插入列表

通过poi操作word,插入各种编号的列表,包括数字,字母,罗马字符,自定义任意字符。下面的示例就用了音乐符♬。

1.制作模板,插入列表使用语法*,模板内容为{{*number123}}

输入图片说明

2.使用Poi-tl,添加依赖

<dependency>    <groupId>com.deepoove</groupId>    <artifactId>poi-tl</artifactId>    <version>1.0.0</version></dependency>

poi-tl是一个java的模板引擎。

GitHub主页:https://github.com/Sayi/poi-tl
Github Wiki 地址

3.Java代码示例

package com.deepoove.poi.tl;import static com.deepoove.poi.data.NumbericRenderData.FMT_BULLET;import static com.deepoove.poi.data.NumbericRenderData.FMT_DECIMAL;import static com.deepoove.poi.data.NumbericRenderData.FMT_DECIMAL_PARENTHESES;import static com.deepoove.poi.data.NumbericRenderData.FMT_LOWER_LETTER;import static com.deepoove.poi.data.NumbericRenderData.FMT_LOWER_ROMAN;import static com.deepoove.poi.data.NumbericRenderData.FMT_UPPER_LETTER;import static com.deepoove.poi.data.NumbericRenderData.FMT_UPPER_ROMAN;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import org.apache.commons.lang3.tuple.Pair;import org.junit.Test;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STNumberFormat;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STNumberFormat.Enum;import com.deepoove.poi.XWPFTemplate;import com.deepoove.poi.data.NumbericRenderData;import com.deepoove.poi.data.TextRenderData;/** * 列表模板 * @author Sayi * @version 0.0.5 */public class NumbericRenderTest {    @SuppressWarnings("serial")    @Test    public void testNumbericRender() throws Exception {        Map<String, Object> datas = new HashMap<String, Object>() {            {                //1. 2. 3.                put("number123", getData(FMT_DECIMAL));                put("number123_dulplicate", getData(FMT_DECIMAL));                //1) 2) 3)                put("number123_kuohao", getData(FMT_DECIMAL_PARENTHESES));                //无序                put("bullet", getData(FMT_BULLET));                //A B C                put("ABC", getData(FMT_UPPER_LETTER));                //a b c                put("abc", getData(FMT_LOWER_LETTER));                //ⅰ ⅱ ⅲ                put("iiiiii", getData(FMT_LOWER_ROMAN));                //Ⅰ Ⅱ Ⅲ                put("IIIII", getData(FMT_UPPER_ROMAN));                //自定义有序列表显示 (one) (two) (three)                put("custom_number", getData(Pair.of(STNumberFormat.CARDINAL_TEXT, "(%1)")));                //自定义无序列表显示:定义无序符号                put("custom_bullet", getData(Pair.of(STNumberFormat.BULLET, "♬")));            }        };        XWPFTemplate template = XWPFTemplate.compile("src/test/resources/numberic.docx")                .render(datas);        FileOutputStream out = new FileOutputStream("out_numberic.docx");        template.write(out);        out.flush();        out.close();        template.close();    }    @SuppressWarnings("serial")    private NumbericRenderData getData(Pair<Enum, String> pair) {        return new NumbericRenderData(pair, new ArrayList<TextRenderData>() {            {                add(new TextRenderData("df2d4f", "Deeply in love with the things you love, just deepoove."));                add(new TextRenderData("Deeply in love with the things you love, just deepoove."));                add(new TextRenderData("5285c5", "Deeply in love with the things you love, just deepoove."));            }        });    }}

输出word

输入图片说明

原创粉丝点击