记一次神奇Bug:poi-tl模板嵌套失败.pdf

上传人:b**** 文档编号:18631608 上传时间:2023-08-23 格式:PDF 页数:6 大小:140.85KB
下载 相关 举报
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第1页
第1页 / 共6页
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第2页
第2页 / 共6页
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第3页
第3页 / 共6页
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第4页
第4页 / 共6页
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第5页
第5页 / 共6页
记一次神奇Bug:poi-tl模板嵌套失败.pdf_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

记一次神奇Bug:poi-tl模板嵌套失败.pdf

《记一次神奇Bug:poi-tl模板嵌套失败.pdf》由会员分享,可在线阅读,更多相关《记一次神奇Bug:poi-tl模板嵌套失败.pdf(6页珍藏版)》请在冰点文库上搜索。

记一次神奇Bug:poi-tl模板嵌套失败.pdf

记次神奇Bug:

poi-tl模板嵌套失败这个问题居然困扰了我两天,刚才突然发现了问题,只能说当事表很后悔、常后悔!

问题、问题描述现在我边有两个word模板档,分别是:

base.docxparagraph.docx我想要将paragraph.docx渲染后的内容,合并到base.docx中去,但是参考了后没有成功、问题出现的环境背景及尝试过哪些法1.外部环境Maven依赖如下:

org.apache.poipoi-ooxml4.1.2org.apache.poipoi-scratchpad4.1.2org.apache.poipoi-examples4.1.2junitjunit4.13com.deepoovepoi-tl1.9.1org.slf4jslf4j-nop1.7.2org.springframeworkspring-expression4.3.6.RELEASE2.回到代码层控制台没有报错,也没有任何报错信息,于是初步判断:

1.件IO流问题读取模板件没有报错,两个模板件都正确读取2.写数据空写paragraph.docx档中的wordParagraphData数据空,经过调试后可知3.模板标签没有错误先根据使经验来看,如果是将poi-tl标签从语法层上写错,base.docx应该会把paragraph.docx件中的标签显出来,或者直接在控制台报错;然后我照了Java属性与标签,也参考了例代码,发现都能对应上并问题。

三、相关代码先是提供两个模型类:

WordData.javapublicclassWordDataprivateWordHomeDatawordHomeData;privateDocxRenderDatawordParagraphData;publicWordHomeDatagetWordHomeData()returnwordHomeData;publicvoidsetWordHomeData(WordHomeDatawordHomeData)this.wordHomeData=wordHomeData;publicDocxRenderDatagetWordParagraphData()returnwordParagraphData;publicvoidsetWordParagraphData(DocxRenderDatawordParagraphData)this.wordParagraphData=wordParagraphData;OverridepublicStringtoString()returnWordData+wordHomeData=+wordHomeData+,wordParagraphData=+wordParagraphData+;WordParagraphData.javapublicclassWordParagraphData/*段落级别:

标题级别*/privateinttitleLevel;/*段落信息*/privateStringtext;publicintgetTitleLevel()returntitleLevel;publicvoidsetTitleLevel(inttitleLevel)this.titleLevel=titleLevel;publicStringgetText()returntext;publicvoidsetText(Stringtext)this.text=text;OverridepublicStringtoString()returnWordParagraphData+titleLevel=+titleLevel+,text=+text+;其中WordData对应着base.docx,WordParagraphData对应着paragraph.docx。

现在我想要将paragraph.docx中的渲染结果合并到base.docx中,合并流程致如下:

为了达到这种效果,我参考了官例,使到了嵌套的法,相关代码如下:

publicstaticvoidwriteToWord(WordModlewordModle)TheameDatatheameData=init(wordModle);WordDatawordData=theameData.getWordData();ListwordParagraphData=theameData.getWordParagraphDataList();wordData.setWordParagraphData(Includes.ofLocal(src/模板集合/paragraph.docx).setRenderModel(wordParagraphData).create();XWPFTpile(E:

base.docx).render(wordData).writeToFile(output.docx);四、你期待的结果是什么?

实际看到的错误信息是什么?

如果将paragraph.docx渲染后的内容成功合并到base.docx中去预期设想如下:

但是结果实际上这样的:

问题解决只能说我真是太根筋了,直在纠结是不是代码有误、是不是模板件的问题,结果刚才排查到,居然是:

地!

址!

写!

错!

了!

原本我是这样的项布局:

|-src|-模板件然后我代码使的是这样的地址来读取件的:

wordData.setWordParagraphData(Includes.ofLocal(src/模板集合/paragraph.docx).setRenderModel(wordParagraphData).create();读的到才有啊!

正确的操作应该是,将项结构改成这样:

|-src|-main|-java|-resource|-模板集合然后将java路径进修改:

wordData.setWordParagraphData(Includes.ofLocal(src/main/resource/模板集合/paragraph.docx).setRenderModel(wordParagraphData).create();然后就顺利解决了这个问题!

总结个关键点就是要细!

细!

细啊!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2