使用poi-tl向word文档中批量插入附件

1. 引入maven依赖

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.10.5</version>
</dependency>

如果系统中引用了其他poi组件,要注意不同版本的对应关系,1.10.5版本的poi-tl要求Apache POI4.1.2,JDK1.8+。如果你的项目引用了低版本可能会导致出现NoSuchMethodError 、ClassNotFoundException 、NoClassDefFoundError异常。

2.代码示例

Map<String, Object> dataModel = new HashMap<>();
//获取需要插入的文档附件
List<ReqFileDO> sampleDocument = fileApi.getFile("样品管理-文件", sampleRespVO.getId());
List<Map<String, Object>> sampleDocumentList = new ArrayList<>();
for (ReqFileDO reqFileDO : sampleDocument) {
    //判断文件类型
    String extName = FileNameUtil.extName(reqFileDO.getName());
    AttachmentType attachmentType = null;
    if ("docx".equals(extName)) {
        attachmentType = AttachmentType.DOCX;
    } else if ("xlsx".equals(extName)) {
        attachmentType = AttachmentType.XLSX;
    }
    if (attachmentType != null) {
        Map<String, Object> map1 = new HashMap<>();
        byte[] fileContent = fileApi.getFileContent(String.valueOf(reqFileDO.getId()));
        AttachmentRenderData attach = Attachments.ofBytes(fileContent,attachmentType).create();
        map1.put("fileName",reqFileDO.getName());
        map1.put("attach",attach);
        sampleDocumentList.add(map1);
    }
}
dataModel.put("sampleDocument",sampleDocumentList);


Configure config = Configure.builder()
				//将附件插件注册为新标签类型 使用{{%var}}
                .addPlugin('%', new AttachmentRenderPolicy())
                .build();
//进行报告生成 获取报告模板内容
byte[] template = fileApi.getFileContent(reportTemplate.getTemplateFileId());
XWPFTemplate xwpfTemplate = XWPFTemplate.compile( new ByteArrayInputStream(template),config).render(dataModel);
ByteArrayOutputStream out = new ByteArrayOutputStream();
xwpfTemplate.write(out);
out.close();
xwpfTemplate.close();


 //获取后缀
String extName = FileNameUtil.extName("模板文档.docx");
//生成文件并存储文件信息
ReqFileDO file = fileApi.createFile("文件名称示例" + '.' + extName, out.toByteArray(), 1L, "报告管理—项目报告", taskReport.getId());


文档使用示例

template.docx
{{?sampleDocument}}
{{%attach}}
{{fileName}}
{{/sampleDocument}}

在这里插入图片描述

3. 输出效果

在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Poi-tl是一个基于Apache POI的开源Java模板引擎,用于生成Word、Excel等Office文档。它提供了一种方便的方式来填充Word文档的数据。 使用poi-tl填充Word文档的步骤如下: 1. 首先,你需要创建一个Word模板文件,模板文件包含了需要填充的数据的占位符。占位符可以是文本、表格、图片等。 2. 然后,你需要使用poi-tl提供的API来加载模板文件,并创建一个Document对象。 3. 接下来,你可以使用Document对象的方法来替换模板的占位符。对于文本占位符,你可以使用replaceText方法来替换。对于表格占位符,你可以使用replaceTable方法来替换。对于图片占位符,你可以使用replacePicture方法来替换。 4. 最后,你可以使用Document对象的方法来保存填充好数据的Word文档。 需要注意的是,如果你需要在循环表格加入图片,可以使用poi-tl提供的replacePicture方法来替换占位符为图片。具体的代码实现可以参考引用提到的方法。 以上就是使用poi-tl填充Word文档的简要介绍。你可以参考引用提供的API文档来了解更多关于poi-tl的用法和功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Poi-tl v1.12.1-API文档(文版).zip](https://download.csdn.net/download/qq_40109352/87963821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [POI-tl导出Word文档表格并且带图片+浏览器导出](https://blog.csdn.net/sh513023410/article/details/130947200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值