java poi-tl 根据模板生成word合并多个word文档

Posted mqy1023

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java poi-tl 根据模板生成word合并多个word文档相关的知识,希望对你有一定的参考价值。

一、导入依赖

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

二、根据模板生成word,合并多个word的代码

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.xwpf.NiceXWPFDocument;

import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class POITlWordTest 

    /**
     * 根据模板生成word
     */
    public static void gen() 

        /**
         * 通过map存放要填充的数据
         */
        Map<String, Object> data = new HashMap<>();

        data.put("title", "Java 全栈知识体系");
        data.put("importants", "hao-kjsdjkdsjk 重点在今后的实际的就是Java重点在今后的实际的就是Java重点在今后的实际的就是Java");
        data.put("normal", "重点在今后的实际的就是Java 全栈知识体系,重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系,重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系重点在今后的实际的就是Java 全栈知识体系");

        XWPFTemplate template = XWPFTemplate.compile("C:\\\\Users\\\\Administrator\\\\Desktop\\\\tpl.docx").render(data);
        try 
            FileOutputStream out = new FileOutputStream("C:\\\\Users\\\\Administrator\\\\Desktop\\\\test.docx");
            template.write(out);
            out.flush();
            out.close();
            template.close();
         catch (IOException e) 
            e.printStackTrace();
        
    

    /**
     * 合并word
     */
    public static void concat() 

        try 

            NiceXWPFDocument main = new NiceXWPFDocument(new FileInputStream("C:\\\\Users\\\\Administrator\\\\Desktop\\\\tpl.docx"));

            NiceXWPFDocument sub = new NiceXWPFDocument(new FileInputStream("C:\\\\Users\\\\Administrator\\\\Desktop\\\\test.docx"));

            //添加段落
            XWPFParagraph p1 = main.createParagraph();
            p1.setPageBreak(true);


            // 合并成三个文档
            NiceXWPFDocument newDoc1 = main.merge(sub);

            // 又添加一个新的段落
            XWPFParagraph p2 = newDoc1.createParagraph();
            p2.setPageBreak(true);

            NiceXWPFDocument newDoc2 = newDoc1.merge(sub);

            // 生成新文档
            FileOutputStream out = new FileOutputStream("C:\\\\Users\\\\Administrator\\\\Desktop\\\\new_test.docx");
            newDoc2.write(out);
            newDoc2.close();
            out.close();
            System.out.println("合并word成功!");
         catch (Exception e) 
            e.printStackTrace();
        
    

    public static void main(String[] args) 
//        gen();

        concat();
    


三、效果图

  • 1、模板的tpl.docx

  • 2、生成的test.docx

  • 3、合并后的new_doc.docx

以上是关于java poi-tl 根据模板生成word合并多个word文档的主要内容,如果未能解决你的问题,请参考以下文章

Word 模板引擎 poi-tl

使用模板生成word文档

Java 使用word模板创建word文档报告教程

Java 使用word模板创建word文档报告教程

Java 使用word模板创建word文档报告教程

poi-tl—一个超级好用开源的Word模板引擎