使用POI-TL通过Word模板生成Word文件
创作时间:
作者:
@小白创作中心
使用POI-TL通过Word模板生成Word文件
引用
CSDN
1.
https://blog.csdn.net/moshowgame/article/details/81702029
技术背景
在网站或系统开发中,常常需要生成Word文件供用户下载打印,例如证明文件或订单文件。Apache POI是Java操作Word文档最流行的库,本文将介绍如何使用POI-TL库通过Word模板生成Word文件。
Maven依赖
要使用POI-TL库,需要在项目的pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.3.1</version>
</dependency>
核心实现代码
以下是一个简单的示例,展示了如何通过一个制作好的Word模板文件,填充数据生成新的Word文件:
@RestController
public class PoiController {
@GetMapping("/generateWord")
public ApiReturnObject generateWord(String data) {
// 模板文件路径
String wordPath = "C:\\Users\\Administrator\\Desktop\\";
String modelName = "人物模板.docx";
String outputName = "hanyunxi.docx";
// 准备数据
Map<String, Object> datas = new HashMap<>();
datas.put("name", "鞠婧祎");
datas.put("team", "前SNH48");
datas.put("gender", "女");
datas.put("birthday", "19940618");
datas.put("remark", "鞠婧祎,1994年6月18日出生于四川遂宁,毕业于四川音乐学院附属中学,中国女演员、歌手,原SNH48 TEAM NII成员");
// 填充数据并生成新的Word文件
XWPFTemplate template = XWPFTemplate.compile(wordPath + modelName).render(datas);
try (FileOutputStream out = new FileOutputStream(wordPath + outputName)) {
template.write(out);
} catch (IOException e) {
e.printStackTrace();
}
return ApiReturnUtil.success(data);
}
}
支持的模板标签
POI-TL支持多种类型的模板标签,包括文本、图片、表格和编号列表等。以下是一些示例:
文本标签:
put("author", new TextRenderData("000000", "Sayi卅一")); put("introduce", "http://www.deepoove.com");图片标签:
put("localPicture", new PictureRenderData(120, 120, "./sayi.png"));表格标签:
put("changeLog", new TableRenderData( new ArrayList<RenderData>() {{ add(new TextRenderData("d0d0d0", "")); add(new TextRenderData("d0d0d0", "introduce")); }}, new ArrayList<Object>() {{ add("1;add new # gramer"); add("2;support insert table"); add("3;support more style"); }}, "no datas", 10600));编号列表标签:
put("feature", new NumbericRenderData(new ArrayList<TextRenderData>() {{ add(new TextRenderData("Plug-in grammar")); add(new TextRenderData("Supports word text, header...")); add(new TextRenderData("Not just templates, but also style templates")); }}));
运行效果
以下是生成的Word文件的运行效果截图:
注意事项
如果在使用过程中遇到以下错误:
org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: The supplied data appears to be in the OLE2 Format. You are calling the part of POI that deals with OOXML (Office Open XML) Documents. You need to call a different part of POI to process this data (eg HSSF instead of XSSF)
这通常是因为文件后缀名错误。POI-TL封装的是docx格式的版本,因此需要确保使用的模板文件是docx格式。
热门推荐
老年慢性肾病患者适当增加蛋白质摄入,或可降低死亡风险
国际资本流动对中国经济的影响
为什么中国人普遍知道哥德巴赫猜想,却不了解黎曼猜想?
直流电机驱动模块详解:L298N与TB6612FNG对比
足底按摩的功效与作用
“弱智吧”成AI训练素材:中科院研究揭示其独特价值
环观健康2024|“新中式养生”风靡:中医药以多元姿态获年轻人青睐
400位古典音乐作曲家,你只需知道这50位
创业想成功,先吃透这些价值千金的教训
IP地址在数字营销和分析中的作用
活性叶酸和普通叶酸有什么区别
韩国财阀透视:实力、贡献与潜在风险,全面剖析其经济地位
附养殖投资成本概算及养鸡利润分析 土鸡养殖成本计算
《绝区零》上线褒贬不一,会打破米哈游的二游口碑吗?
将蜀汉推向深渊的并非刘禅,也非诸葛亮,真正的罪魁祸首是这四人
根据乌尔里希·包霍费尔博士视频解析:如何正确选择镁补充剂
动态心电图报告解读:如何识别早搏次数及评估心脏健康
征信负债高如何贷款?教你几招提高贷款成功率
贝叶斯概率编程:机器学习的新范式
2024年量子信息技术行业研究:量子技术蓬勃发展,长期成长空间广阔
眼睛老视怎么办?一文看懂老视的真相!
诺如病毒感染和急性胃肠炎的区别
学生干部应该具备哪些素质和能力
"绣花"功夫让高迁古村焕发新韵
河北沧州必打卡的7大美食,外人做的吃过5种,快看看你吃过几种
蛋糕营养与健康价值探讨
透镜在光学中扮演什么角色?深入探索光学透镜
那场比赛后,王皓哭了、马龙哭了,两人都说了5句掏心话,有相同也有不同
倒车分怎样准确判断?判断方法在不同场景中的适用性如何?
晋中经纬智能公司:以“智”造奋战新春“开门红”