java word模板替换多行_Java动态替换word模板的最佳实践

poi-tl

基于word的模板渲染(替换)组件

对docx格式的文档增加模板语法,增加渲染模板的方便性,目前支持对段落、页眉、页脚、表格的文本、图片、表单渲染。

对于word模板替换,我们不仅要考虑复杂的模板格式,还要考虑字体,颜色,处理页眉页脚,使用稍显复杂的poi的API等,现实项目中又有许多需求需要后台动态生成数据然后替换word模板,供前台下载或者打印,为了避免:

java操作word使用poi的复杂性

转化为xml操作word的难度

依赖服务器上安装软件openoffice来调用转化

依赖windows的word库,不具有跨平台性

因此基于poi开发了一套拥有简洁API的跨平台的模板引擎:poi-tl

文档

poi-tl:poi template language 一个基于poi的word模板生成文档的开源组件。

文档介绍:http://deepoove.com/poi-tl/

GitHub地址:https://github.com/Sayi/poi-tl

代码地址:见github的junit测试用例

Change log

v1.0.0

以插件的思想进行了重新设计

高度扩展性:语法即插件,像新增插件一样新增语法

新增工具类BytePictureUtils,便于操作图片的byte[]数据

新增Annotation @Name

NiceXWPFDocument新增插入段落insertNewParagraph方法

新增代码生成工具类CodeGenUtils

V0.0.5

bugfix: 解决0.0.4版本解析模板时CTSignedTwips类加载不到的问题

new feature: 新增列表语法*,支持对有序列表和无序列表的插入

V0.0.4

增加新的api:XWPFTemplate.compile

渲染数据除了支持Map以外,还支持JavaBean渲染

升级poi组件至最新版本3.16

V0.0.3

新增表单语法#

支持表单插入

渲染器支持对table动态处理DynamicTableRenderPolicy

支持单元格的合并

丰富文本样式

使用

com.deepoove

poi-tl

1.0.0

示例-Map渲染

Map datas = new HashMap(){ {

put(“author”, new TextRenderData(“000000”, “Sayi”));

put(“date”, “2015-04-01”);

put(“logo”, new PictureRenderData(100, 100, “/Users/Sayi/image.png”));

}};

//render

XWPFTemplate template = XWPFTemplate.compile(“src/test/resources/PB.docx”).render(datas);;

//out document

FileOutputStream out = new FileOutputStream(“out.docx”);

template.write(out);

template.close();

out.close();

示例-JavaBean渲染

DataSourceTest obj = new DataSourceTest();

obj.setHeader_version(“v0.0.3”);

obj.setHello(“v0.0.3”);

obj.setWebsite(“http://www.deepoove.com/poi-tl”);

obj.setLogo(new PictureRenderData(100, 120, “src/test/resources/logo.png”));

obj.setTitle(new TextRenderData(“9d55b8”,

“Deeply in love with the things you love,\\n just deepoove.”));

XWPFTemplate template = XWPFTemplate.compile(“src/test/resources/PB.docx”).render(obj);

FileOutputStream out = new FileOutputStream(“out.docx”);

template.write(out);

template.close();

out.flush();

out.close();

渲染图

《java word模板替换多行_Java动态替换word模板的最佳实践》

《java word模板替换多行_Java动态替换word模板的最佳实践》

《java word模板替换多行_Java动态替换word模板的最佳实践》

《java word模板替换多行_Java动态替换word模板的最佳实践》

    原文作者:weixin_39670464
    原文地址: https://blog.csdn.net/weixin_39670464/article/details/114806332
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞