用POI-TL合并WORD文档(XWPFDocument)

碰到一个需求,要将多个POI生成的XWPFDocument合并成一个word导出。原先使用的通过两个文档的CTBody合并的方法,在处理100个文档的时候,就发生了内存了溢出的情况无法进行了。后来在网上搜索各种第三方的导出方案,发现POI-TL处理这方面的需求比较高效。

①引入Maven依赖

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

②生成NiceXWPFDocument列表。NiceXWPFDocument是XWPFDocument的子类,可以直接使用POI的各种操作方法。

List<NiceXWPFDocument> docList = new ArrayList();
for(PersonInfo personInfo:personInfoList){
    NiceXWPFDocument document = new NiceXWPFDocument();
    DocUtil.parse(document,personInfo);
    docList.add(document);
}
    

③合并文档,并输出

NiceXWPFDocument document = docList.get(0);
docList.remove(document);
NiceXWPFDocument combine = document.merge(docList, document.getXWPFDocument().createParagraph().createRun());
document.close();
docList.forEach(doc-> {
	try {
		doc.close();
	} catch (IOException e) {
		throw new RuntimeException(e);
	}
});
combine.write(response.getOutputStream()); //HttpResponse
combine.close();

至此合并完成。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值