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

您所在的位置:网站首页 java生成文件设置编码 java使用freemarker动态生成world文档及常见错误解决

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

2023-04-23 22:26| 来源: 网络整理| 查看: 265

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

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

第三步:将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的时候,${}格式会出现问题,导致解析异常

解决办法(第二步):

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3