Java根据word 模板,生成自定义内容的word 文件

处理思路:

  1. 将word模板以xml格式另存一份,得到xml格式模板
  2. 在xml 文件中,使用freemark标签,替换一些自定义值
  3. 使用freemark 解析xml ,输出到.doc 文件 
  4. 在处理的时候要把文件后缀改成.ftl格式
  5. 获得自定义内容的word文件

案列资源: 

https://download.csdn.net/download/csdn_heliu/10881778

实际操作: 

word模板:

 另存为xml文件,修改后缀名为.ftl格式(ftl文件是使用freemark标签处理过的,已经替换自定义内容,用idea或者eclipse处理太卡了,在外面用编辑器处理的)

实际代码实现: 

 public static void main(String[] args) {
        //定义一个集合存放的是学生信息
        List<Student> studentList = new ArrayList<>();
        //学生A
        Student a = new Student();
        a.setName("学生A");
        a.setSex("男");
        a.setAge(18);
        a.setPhone("18856652121");
        a.setAddress("安徽省合肥市");
        studentList.add(a);
        //学生B
        Student b = new Student();
        b.setName("学生B");
        b.setSex("女");
        b.setAge(80);
        b.setPhone("18856654444");
        b.setAddress("美国加州");
        studentList.add(b);
        //学生C
        Student c = new Student();
        c.setName("学生C");
        c.setSex("女");
        c.setAge(19);
        c.setPhone("18856652121");
        c.setAddress("江苏浙江");
        studentList.add(c);
        //把学生信息放到map里
        Map<String, Object> params = new HashMap<>();
        params.put("studentList", studentList);
        //标题
        params.put("title", "高三(3)班");

        logger.info("params:{}", params);

        //生成自定义内容word
        String resultFilePath = String.format("D:/edu/test_%s.doc", "高三(3)班");
        FreeMakerParser.process("templates/test.ftl", resultFilePath, params);
    }

解析xml输出到.doc文件中—生成word文档时使用的方法:

 /**
     * @Description 解析xml输出到.doc文件中—生成word文档时使用
     * @author HeLiu
     * @date 2018/12/27 17:07
     */
    public static String process(String templateFilePath, String resultFilePath, Map param) {
        CONFIGURER.setDefaultEncoding("UTF-8");// 设置默认编码方式
        try {
            InputStream is = FreeMakerParser.class.getClassLoader().getResourceAsStream(templateFilePath);
            if (null == is) {
                logger.info(".............InputStream is null..........");
            }
            File targetFile = F
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值