POI-tl 把数据导入Word模板生成word文件 简单版

需求:

因为项目做的是一个体检的系统,需要把体检后获得的数据录入到固定的word模板,最后生成新的word文档。废话不多说上干货;

关于poi-tl

poi-tl:poi template language 一个基于poi的word模板生成文档的开源组件。
文档介绍:http://deepoove.com/poi-tl/

pom.xml

<dependency>
    <groupId>com.deepoovegroupId>
    <artifactId>poi-tlartifactId>
    <version>1.3.1version>
dependency>

poi-tl语法:

总共就5种语法:

1.文本模板{{var}} 渲染为 TextRenderData 或 String 数据模型

2.图片模板{{@photo}} 渲染为 PictureRenderData 数据模型

3.表格模板{{#var}} 渲染数据模型是 MiniTableRenderData

4.列表模板{{*var}} 渲染为 NumbericRenderData 数据模型

5.文档模板{{+var}} 渲染为 DocxRenderData 数据模型

敲黑板,请看大屏幕:

案例:

         A.首先准备个模板

姓名 {{name}} 花名 {{oname}} 性别 {{xb}} {{@photo}}
出生年月 {{csny}} 民族 {{mz}} 政治 {{zz}}
身份证号 {{sfzjh}} 学籍号 {{xjh}}
通讯地址 {{txdz}} 联系电话 {{phone}}
POI-tl 把数据导入Word模板生成word文件 简单版_第1张图片

        B.代码
    /**
     * word模板测试
     * @return
     */
    @PostMapping("/word")
    public String testWord() {


        Map datas = new HashMap() {
            {
                // 本地图片
                put("photo", new PictureRenderData(100, 110, "F:\\123" + "/1.jpg"));
                put("name", "小姐");
                put("oname", "包夜500");
                put("xb", "女");
                put("csny", "19900101");
                put("mz", "汉族");
                put("zz", "团员");
                put("sfzjh", "451102419900103454");
                put("xjh", "G511024199");
                put("txdz", "广东省");
                put("phone", "1887282121");

            }
        };

        //不支持doc的格式
        //XWPFTemplate template = XWPFTemplate.compile("C://Users/梦想的开始/Desktop" + "/word.doc");
        XWPFTemplate template = XWPFTemplate.compile("F://123/word.docx");
        System.out.println(template);
        XWPFTemplate render = template.render(datas);
        System.out.println(render);


        FileOutputStream out;
        try {
            out = new FileOutputStream("F://123" + "/out_picture.docx");
            template.write(out);
            out.flush();
            out.close();
            template.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return "操作成功";

    }

结果展示:

POI-tl 把数据导入Word模板生成word文件 简单版_第2张图片

你可能感兴趣的:(POI-tl 把数据导入Word模板生成word文件 简单版)