填充数据到word模板中

昨天写了一篇博客,是导出word模板的。

今天来说一下如何填充数据到模板中。

先上图,合同:



需要在指定需要填充数据的位置,添加标识,这只是初步的标识,

然后,另存为xml格式,会发现,这些标识,可能会发生转义(因为字体,颜色,加粗,下划线等等因素)。如图下:



然后在xml文件中,找到对应标识的位置,改成如下格式。

${zpmc?if_exists}
修改后的为:



因为,可能由于数据的问题,某些字段数据并不存在,所以,要在后面加上    ?if_exists


然后,代码如下:

package com;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.cache.FileTemplateLoader;
import freemarker.cache.TemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class CreateWordT {

	public static void main(String[] args) {
		Map<String, Object> cont = new HashMap<String, Object>();// 存储数据
		cont.put("xmh", "111");
		cont.put("hth", "222");
		cont.put("zpmc", "");
		cont.put("zpsm", "444");
		cont.put("zpzs", "555");

		try {
			//模板的路径
			File fir = new File("W:/test/wswhr/");
			
			//生成文件的路径及文件名。
			File outFile = new File("W:/test/wswhr/委托创作合同.doc");

			Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));

			// 使用FileTemplateLoader
			//指定模板路径
			TemplateLoader templateLoader = null;
			templateLoader = new FileTemplateLoader(fir);
			String tempname = "委托创作合同.xml";
			
			Configuration cfg = new Configuration();
			cfg.setTemplateLoader(templateLoader);
			Template t = cfg.getTemplate(tempname, "UTF-8");
			
			t.process(cont, out);
			out.flush();
			out.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

代码中,t.process(cont,out);

会在模板t中,填充cont的数据,输出到out文件中。

成功后的结果如下:


因为作品名称,我没有放数据,所以为空。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值