4、docx4j中模板的使用

http://www.chendd.cn/information/viewInformation/other/256.a

关于模板的实现是日常开发中最常用到的,也是最易于维护的一种功能实现,利用模板可以非常高效的去实现文档内容的布局显示级相关属性的设置,同时利用docx文件作为模板也非常方便的进行二次修改和变更,它的好处不再赘述。

通过运行一列示例发现docx4j的关于模板的实现至少有3-4中方式,模板有常用的jxel表达式的写法、Word自带书签的写法、《》中文括号包裹的写法、Word中开发工具-设计模式实现的写法等等,既然能够读取到文档中的各种内容,自己想如何解析都是可以的,本文(和后文中)均采用类似jxel表达式引擎的方式去深入实现。

给出两种案例去实现基于模板中的变量替换cao作,采用docx4j提供的变量替换的方式,分别是“请假条”和“收入证明”两种单纯变量替换的实现,这两个模板示例中只包括了纯变量替换和含有图片,至于模板中有表格或者动态图片后文会实现。

关于“请假条”案例的模板文件参考为:

blob.png

上述含有多个变量的替换,参考代码实现为:    

package cn.chendd.docx4j.examples;

     

    import java.io.File;

    import java.util.HashMap;

     

    import org.docx4j.Docx4J;

    import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

    import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

     

    /**

     * 收入证明模板示例

     */

    public class IncomeTemplateTest {

     

       public static void main(String[] args) throws Exception {

          String templatePath = System.getProperty("user.dir") + "/template/收入证明_template.docx";

          String outPath = System.getProperty("user.dir") + "/template/out/收入证明.docx";

          WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(newjava.io.File(templatePath));

          MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();

          HashMap<String, String> mappings = new HashMap<String, String>();

          mappings.put("name", "马参军");

          mappings.put("years", "5");

          mappings.put("post", "攻城狮");

          mappings.put("money", "25,000.00");

          mappings.put("moneyChinese", "二万五年里");

          mappings.put("address", "天宫一号天宫一号天宫一号天宫一号");

          mappings.put("telephone", "188188188188");

          mappings.put("year", "2018");

          mappings.put("month", "09");

          mappings.put("date", "11");

          documentPart.variableReplace(mappings);

          Docx4J.save(wordMLPackage, new File(outPath));

       }

      

    }

代码运行效果图参考为:

blob.png

关于“收入证明”案例的模板文件参考为:

blob.png

其实这个案例跟上述一样,只不过以前工作中涉及到的Word报表曾经涉及到有盖章的实现,就特地想到收入证明这种单据,是需要企业盖公章的,也就是比上述的工资条的案例多了一个盖章的图片而已,别的不涉及,我想代码你们就不用看了,有请假条的可供参考,没有写不出来的吧。

上述案例中相关文件下载

icon_txt.gif请假条_template.docx

icon_txt.gif收入证明.docx

icon_txt.gif收入证明_template.docx

icon_txt.gif请假条.docx

 

转载于:https://my.oschina.net/haiyangyiba/blog/2246103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值