免费做h5的平台有哪些?(哪里可以免费做h5)
857
2022-05-29
poi-tl是一个基于Apache POI的Word模板引擎,同时它也是一个免费开源(github地址)的Java类库,给Java程序员带来了word处理上的便捷。
在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。
2.1 poi-tl与其他word模板引擎的对比
方案
移植性
功能性
易用性
Poi-tl
Java跨平台
Word模板引擎
基于Apache POI,更友好的API
Apache POI
Java跨平台
Apache项目,不仅封装了易用的文档API(文本、图片、表格、页眉、页脚、图表等),也可以在底层直接操作XML结构
文档不全,这里有一个教程:Apache POI Word快速入门
Freemarker
XML跨平台
仅支持文本,很大的局限性
不推荐,需要维护XML结构,代码后期不可维护
OpenOffice
部署OpenOffice,移植性较差
-
需要了解OpenOffice的API
HTML浏览器导出
依赖浏览器的实现,移植性较差
HTML不能很好的兼容Word的格式
-
Jacob、winlib
Windows平台
-
复杂,完全不推荐使用
2.2 poi-tl的编码模式
TDO模式: Template + data-model = output
2.2.1 Template—模板
模板即Docx格式的Word文档
2.2.2 Data-model—数据
数据即模板中需要替换的数据结构,类似哈希或者字典,常用Map结构,其中key即需要替换的标签
2.2.3 Output—输出
输出即最终文档的流产生,可以是文件流或网络流等
Apache POI 4.1.2
jdk 1.8+
maven依赖
4.1 文本
标签
{{var}}
数据模型
String:文本
TextRenderData:有样式的文本
HyperlinkTextRenderData :超链接和锚点文本
Object:调用 toString() 方法转化为文本
测试模板
测试代码
package com.lizba.poi; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.Texts; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; /** *
* 文本测试 *
* * @Author: Liziba * @Date: 2021/6/24 21:49 */ public class DocTest { public static void main(String[] args) throws IOException { String filePath = "D:\\poi-tl\\textTest.docx"; String targetPath = "D:\\poi-tl\\textTestTarget.docx"; XWPFTemplate template = XWPFTemplate.compile(filePath).render( new HashMap测试结果
4.2 图片
标签
{{@var}}
数据模型
String:图片url或者本地路径。默认使用图片自身尺寸
PictureRenderData
测试模板
测试代码
package com.lizba.poi; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.PictureType; import com.deepoove.poi.data.Pictures; import com.deepoove.poi.data.Texts; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; /** *
* 图片测试 *
* * @Author: Liziba * @Date: 2021/6/24 21:49 */ public class PictureTest { public static void main(String[] args) throws IOException { String filePath = "D:\\poi-tl\\pictureTest.docx"; String targetPath = "D:\\poi-tl\\pictureTest2.docx"; String picPath = "D:\\poi-tl\\pic.jpg"; XWPFTemplate template = XWPFTemplate.compile(filePath).render( new HashMap测试结果
4.3 表格
标签
{{#var}}
数据模型
TableRenderData
测试模板
测试代码
package com.lizba.poi; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.*; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; /** *
* 列表测试 *
* * @Author: Liziba * @Date: 2021/6/24 21:49 */ public class TableTest { public static void main(String[] args) throws IOException { String filePath = "D:\\poi-tl\\tableTest.docx"; String targetPath = "D:\\poi-tl\\tableTest2.docx"; // 表头 RowRenderData tableHead = Rows.of("姓名", "性别", "地址", "微信公众号").center().bgColor("4472c4").create(); // 第一行 RowRenderData row1 = Rows.create("张三", "男", "广东深圳", "liziba_98"); // 第二行 RowRenderData row2 = Rows.create("李四", "男", "广东深圳", "liziba_98"); // 合并第一行和第二行的第二列与第三列 MergeCellRule rule = MergeCellRule.builder().map(MergeCellRule.Grid.of(1, 1), MergeCellRule.Grid.of(2, 1)) .map(MergeCellRule.Grid.of(1, 2), MergeCellRule.Grid.of(2, 2)).build(); XWPFTemplate template = XWPFTemplate.compile(filePath).render( new HashMap测试结果
4.4 列表、区块对、嵌套
....省略
5、总结
官网地址:http://deepoove.com/poi-tl
github地址:https://github.com/Sayi/poi-tl
Apache
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。