基于freemark向word文件中插入多附件的方法技术

技术编号:32832980 阅读:16 留言:0更新日期:2022-03-26 20:48
本发明专利技术公开基于freemark向word文件中插入多附件的方法,将word需要插入附件的位置分别用占用符替代,然后通过office软件将word另存为xml格式,并最终将另存为xml格式的文件进行格式化之后修改文件后缀名为ftl。根据附件参数集合中的文件类型在ftl模板的对应位置添加相应的标签数据;然后将附件转行为base64数据替换ftl模板的占位符。本发明专利技术满足各种类型和场景下的附件插入效果。和场景下的附件插入效果。和场景下的附件插入效果。

【技术实现步骤摘要】
基于freemark向word文件中插入多附件的方法


[0001]本专利技术涉及java应用
,尤其涉及基于freemark向word文件中插入多附件的方法。

技术介绍

[0002]现有freemark模板引擎技术通过代码向模板中插入附件超链接。通过插入附件base64编码数据方式:首先需要根据插入附件的个数和类型事先在word文件模板中先手动在指定位置插入对应类型的空文件,并将word文件另存为xml格式,然后找到插入附件对应的Base64数据所在位置,删除对应文件所对应的base64数据并用${*}占位符代替,最终另存为ftl格式的模板文件。然后通过Java读取待插入附件并转换为Base64编码,最终通过freemark模板引擎将${*}占位符替换成附件的Base64编码的值,并最终生成word文件。
[0003]然而,采用插入超链接的方式需要在将word文件与附件都存放于同一目录下,会生成大量文件;在下载文件时还需要将文件和所有附件打包成压缩包。且生成模板文件较为繁琐,需要过多的人工干预。首先需要创建一个模板文件,并找到对应插入附件的位置事先插入对应类型的文件。并手动另存为word xml格式。保存后的xml格式文件还需要手动格式化。将相应的数据删除后在替换成占位符。若生成的word文件中存在需要循环插入附件的地方,或插入附件个数和类型未知的情况下则很容易造成失败。稍有操作不当则会造成生成的word文件在打开时提示文件损坏。

技术实现思路

[0004]本专利技术的目的在于提供基于freemark向word文件中插入多附件的方法。
[0005]本专利技术采用的技术方案是:基于freemark向word文件中插入多附件的方法,其包括以下步骤:步骤1,获取待插入的word文件转化为xml格式文件,并重命名为test.xml文件;步骤2,通过代码扫描test.xml文件中${attacheFile_文件路径}的个数与位置信息以确认附件信息,步骤3,基于附件信息的文件名扫描各个附件的获取对应附件的文件类型;步骤4,根据附件的个数与文件类型在test.xml文件对应位置加入相对应文件类型的xml基础数据;步骤5,将test.xml文件后缀名改成test.ftl文件备用;步骤6,创建wordParamsMap读取各附件文件并分别转为base64编码数据以作为value,并调用freemark.jar包提供的process方法扫描test.ftl文件,并在扫描到${key}的占位符时就将对应的value值替换掉占位符生成word文档。
[0006]进一步地,步骤1中调用Spire Doc.jar提供的saveToFile将word文件另存为test.xml。
[0007]进一步地,步骤3中根据附件信息的文件流中前几个字符判断真实的文件类型。
[0008]进一步地,步骤4中预先收集分析各个类型文件在word文档中的表现形式并生成基础数据。
[0009]进一步地,步骤4中进行Relationship节点的Id编号处理,然后根据附件的个数与文件类型在对应位置加入相对应的xml基础数据。
[0010]进一步地,步骤6中以attacheFile_文件路径作为关键字读取各附件。
[0011]进一步地,其包括步骤7,将步骤1至步骤6的分析处理过程封装成jar包,在程序中引入该jar包以调用提供的方法,传入需要插入文件的word文件路径,便自动完成附件的插入并输出word文档。
[0012]本专利技术采用以上技术方案,将word需要插入附件的位置分别用占用符替代,然后通过office软件将word另存为xml格式,并最终将另存为xml格式的文件进行格式化之后修改文件后缀名为ftl。根据附件参数集合中的文件类型在ftl模板的对应位置添加相应的标签数据;然后将附件转行为base64数据替换ftl模板的占位符,满足各种类型和场景下的附件插入效果。并最终在word中的展示效果与人员手动将附件插入到word文件中相当。在java开发中经常有各种任务报表的功能需求,需要最终生成word文件报告用于汇报。且生成报告的同时还可能需要有各类数据的展示,若数据量大则会选择将数据导出到excel文件中,并最终将excel文件插入到word文件。此外还可能根据不同模块等循环生成此类数据信息,因此本专利技术在此类情况下显得更加便捷。本专利技术具有使用更加便捷避免了复杂的人为处理过程。
技术介绍
使用过程中需要人为手动针对模板进行大量的处理。并且在有些特定的场景之下,
技术介绍
并不能实现想要的效果。
附图说明
[0013]以下结合附图和具体实施方式对本专利技术做进一步详细说明;图1为本专利技术基于freemark向word文件中插入多附件的方法的架构示意图。
具体实施方式
[0014]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图对本申请实施例中的技术方案进行清楚、完整地描述。
[0015]如图1所示,本专利技术公开了基于freemark向word文件中插入多附件的方法,其包括以下步骤:步骤1,获取待插入的word文件转化为xml格式文件,并重命名为test.xml文件;步骤2,通过代码扫描test.xml文件中${attacheFile_文件路径}的个数与位置信息以确认附件信息,步骤3,基于附件信息的文件名扫描各个附件的获取对应附件的文件类型;步骤4,根据附件的个数与文件类型在test.xml文件对应位置加入相对应文件类型的xml基础数据;步骤5,将test.xml文件后缀名改成test.ftl文件备用;步骤6,创建wordParamsMap读取各附件文件并分别转为base64编码数据以作为value,并调用freemark.jar包提供的process方法扫描test.ftl文件,并在扫描到${key}的占位符时就将对应的value值替换掉占位符生成word文档。
[0016]具体地,生成代码如下://生成wordFile outFile = new File(“输出文件路径”);Writer out = null;FileOutputStream fos = new FileOutputStream(outFile);Writer out = new OutputStreamWriter(fos, "UTF

8");template.process(wordParamsMap,out);进一步地,步骤1中调用Spire Doc.jar提供的saveToFile将word文件另存为test.xml。具体地,执行代码如下://加载Word测试文档Document doc = new Document();doc.loadFromFile("text.docx");//调用方法转为xml文件doc.saveToFile("test.xml.",FileFormat.Word_Xml);doc.dispose();进一步地,步骤3中根据附件信息的文件流中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于freemark向word文件中插入多附件的方法,其特征在于:其包括以下步骤:步骤1,获取待插入的word文件转化为xml格式文件,并重命名为test.xml文件;步骤2,通过代码扫描test.xml文件中${attacheFile_文件路径}的个数与位置信息以确认附件信息,步骤3,基于附件信息的文件名扫描各个附件的获取对应附件的文件类型;步骤4,根据附件的个数与文件类型在test.xml文件对应位置加入相对应文件类型的xml基础数据;步骤5,将test.xml文件后缀名改成test.ftl文件备用;步骤6,创建wordParamsMap读取各附件文件并分别转为base64编码数据以作为value,并调用freemark.jar包提供的process方法扫描test.ftl文件,并在扫描到${key}的占位符时就将对应的value值替换掉占位符生成word文档。2. 根据权利要求1所述的基于freemark向word文件中插入多附件的方法,其特征在于:步骤1中调用Spire Doc.jar提供的saveToFile将word文件另存为test....

【专利技术属性】
技术研发人员:揭水宝陈磊邢智桦
申请(专利权)人:中电福富信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1