男性产品哪个网站可以做,重庆建企业网站,娱乐网页设计,网站建设支付主要是借助 poi-tl 来实现业务需求 当时第一次尝试的是Apache poi不是很好用#xff0c;不推荐 第二次是xml#xff0c;找的眼睛都花了#xff0c;不推荐
要求#xff1a;jdk1.8#xff0c;Apache POI5.2.2 我这里使用的是5.2.3版本
文档#xff1a;Poi-tl Documentati…主要是借助 poi-tl 来实现业务需求 当时第一次尝试的是Apache poi不是很好用不推荐 第二次是xml找的眼睛都花了不推荐
要求jdk1.8Apache POI5.2.2 我这里使用的是5.2.3版本
文档Poi-tl Documentation
!-- Apache POI --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion5.2.3/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion5.2.3/version/dependencydependencygroupIdcom.deepoove/groupIdartifactIdpoi-tl/artifactIdversion1.12.2/version/dependency
注意这里需要确保没有其他的版本的poi否则项目启动会报找不到类等错误例如出现java.lang.NoSuchFieldError:Factory 解决方式此问题是由pom依赖导致通过CtrlN查看ThemeDocument类出现多个版本发现引入了两个不同版本的poi包导致版本冲突。
其中NoSuchMethodError 、ClassNotFoundException 、NoClassDefFoundError异常都是版本不对的问题需要升级版本 代码部分
// 利用map结构存储数据MapString, Object data new HashMap();
// 指定路径 compile 编译模板 render添加数据源
XWPFTemplate template XWPFTemplate.compile(xxx.docx).render(data);try {//write 输出到流template.writeAndClose(new FileOutputStream(输出路径));} catch (IOException e) {e.printStackTrace();log.error(写入文件出错了);} 模板部分使用poi-tl最大的难点或者说工作量在于模板的制作具体可以看上面文档文档中拥有具体格式。
普通替换只需要{{属性名}}逻辑判断是否显示{{?属性名}}...{{/属性名}}列表{{*列表名}} 在这里我单纯只使用了ListString,文档中有更复杂的形式包括对象表格我这里没有涉及到不做考虑