使用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格式。
热门推荐
深度揭秘 IGBT:从原理、特性到应用的全方位解析
腌制咸鸭蛋时盐的使用量指南
腌咸鸭蛋,切勿直接用粗盐水泡!教你正宗做法,鸭蛋个个流油
绿植放在家中的位置(绿植放在家中的位置有讲究吗)
月薪和绩效拆分比例如何规定合法
身体有血栓是什么症状呢
论文图片用jpg还是png好?论文图片格式要求标准
DNF手游鬼泣职业详解:召唤鬼神,掌控黑暗力量
社群团购与社区团购背后的信任机制构建及其影响因素
家庭心理咨询:婆媳之间争风吃醋,儿子如何去平衡
复合维生素B和谷维素可一起服用吗?
中国智慧养老行业发展趋势研究与未来投资分析报告(2024-2031年)
舟山:浙江空气最好的宜居城市,空气质量全国第三
青岛小吃,如何长大?锅贴等好吃却难扩店,产业化运营成短板
医院看骨科需要注意些什么呢?提前知道,看病更轻松
骨科常用两种锻炼方式
微信转账工资流水的法律效力解析
证据证明力大小顺序是怎样的
体外冲击波碎石科普知识
提高铸造铁水流动性的关键因素与解决方案
治疗放臭屁最快方法是什么
种姜所需土壤介绍(揭秘姜的喜好土壤类型)
如何有效提升抢票成功率?
泰国高中留学指南:选校标准与申请流程全解析
被原子弹轰炸,100年都不能住人?为何广岛和长崎却住满了人呢?
易上火体质如何调理?从饮食到生活习惯的全方位指南
脑机接口应用新突破,浙大团队研发脑“反导系统”抑制癫痫
浴霸家用哪种比较实用?灯暖好还是风暖好?对比一下,结果一目了然!
揭秘DeepSeek MLPerf基准测试:性能评估的终极指南
服用降压药可能导致高血钾!怎么辨别体内血钾水平的异常表现?