java使用freemarker动态生成world文档及常见错误解决

第一步:手动创建一个doc模板;

java使用freemarker动态生成world文档及常见错误解决_第1张图片

第二步:将world中需要动态生成的部分用${}替换

java使用freemarker动态生成world文档及常见错误解决_第2张图片

第三步:将world另存为xml文件


第四步:将xml文件复制在eclipse(或者其他代码编辑器)中,然后鼠标右击文件->properties,设置编码格式为utf-8(防止转换后的world乱码),最后修改文件的类型为ftl(即文件的后缀名为.ftl)

第五步:

目录结构:


代码:

package world;
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStreamWriter;
import java.io.Writer;  
import java.util.HashMap; 
import java.util.Map; 
import freemarker.template.Configuration; 
import freemarker.template.Template; 
import freemarker.template.TemplateException; 
/**
 * 文件处理
 */
public class DocumentHandler { 
    private Configuration configuration = null; 
    public DocumentHandler() { 
        configuration = new Configuration(); 
        configuration.setDefaultEncoding("utf-8"); 
    } 
    public void createDoc() { 
        //要填入模本的数据文件 
    	ShenQingShu data=new ShenQingShu(); 
        getData(data); 
 
        //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, 
        configuration.setClassForTemplateLoading(this.getClass(),"shengqingshu"); 
        Template t=null; 
        try { 
            //test.ftl为要装载的模板 
            t = configuration.getTemplate("3.ftl"); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        //输出文档路径及名称 
        File outFile = new File("C:\\Users\\Administrator\\Desktop\\world\\out.doc"); 
        Writer out = null; 
    	try {
			out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        try { 
            t.process(data, out); 
        } catch (TemplateException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
    /** 
     * 注意:
     * 如果是Map那么存放的数据Key值要与模板中的参数相对应 
     * 如果是java Bean那么属性名要和模板中的参数相对应
     * @param dataMap 
     */ 
     private void getData(ShenQingShu data){ 
          data.setName("lw");
          data.setTel("111111111");
          data.setPapers_type("身份证");
          data.setPapers_number("422325199704193518");
          data.setBrand_type("奥迪A6");
          data.setDealer("中国开运");
          data.setEndine_number("dfad565891221");
          data.setTotal_prices("45万");
          data.setDown_payment_for("0.8");
          data.setVin("123456789");
          data.setFirst_payment_ratio("40万");
      } 
     public static void main(String[] args){
    	 DocumentHandler dh=new DocumentHandler();
    	 dh.createDoc();
     }
} 

需要的jar:

		
		     org.freemarker
		     freemarker
		     2.3.20
	 	

OK,运行代码,打开world文档,就可以看到效果了!

注意:

若出现如下错误

Was expecting one of:  
     ...  
     ...  
    "false" ...  
    "true" ...  
     ...  
     ...  
    "." ...  
    "+" ...  
    "-" ...  
    "!" ...  
    "[" ...  
    "(" ...  
    "{" ...  
     ...  

原因,world在转换为xml的时候,${}格式会出现问题,导致解析异常

解决办法(第二步):

java使用freemarker动态生成world文档及常见错误解决_第3张图片

打开xml文件,将字段用${}包括起来,就OK!


    



你可能感兴趣的:(pdf和world解析,excel)