freemarker导出word时报出异常求帮助!
上代码先(直接从网上粘的自己稍作修改):
package example;
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() {
// 要填入模本的数据文件
Map dataMap = new HashMap();
getData(dataMap);
// 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在com.havenliu.document.template包下面
configuration.setClassForTemplateLoading(this.getClass(),
"/ccc/");
Template t = null;
try {
// test.ftl为要装载的模板
t = configuration.getTemplate("niuwode.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
}
// 输出文档路径及名称
File outFile = new File("E:/test.doc");
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile), "utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
}
try {
t.process(dataMap, out);
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 注意dataMap里存放的数据Key值要与模板中的参数相对应
*
* @param dataMap
*/
private void getData(Map dataMap) {
dataMap.put("title_name", "用户信息");
dataMap.put("user_name", "张三");
dataMap.put("org_name", "微软公司");
dataMap.put("dept_name", "事业部");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DocumentHandler dh = new DocumentHandler();
dh.createDoc();
}
}
报出的异常是:
freemarker.core.ParseException: Encountered "<" at line 3, column 3011 in niuwode.ftl.
Was expecting one of:
<STRING_LITERAL> ...
<RAW_STRING> ...
"false" ...
"true" ...
<INTEGER> ...
<DECIMAL> ...
"." ...
"+" ...
"-" ...
"!" ...
"[" ...
"(" ...
"{" ...
<ID> ...
at freemarker.core.FMParser.generateParseException(FMParser.java:4697)
at freemarker.core.FMParser.jj_consume_token(FMParser.java:4568)
at freemarker.core.FMParser.UnaryExpression(FMParser.java:323)
at freemarker.core.FMParser.MultiplicativeExpression(FMParser.java:435)
at freemarker.core.FMParser.AdditiveExpression(FMParser.java:385)
at freemarker.core.FMParser.RangeExpression(FMParser.java:556)
at freemarker.core.FMParser.RelationalExpression(FMParser.java:511)
at freemarker.core.FMParser.EqualityExpression(FMParser.java:476)
at freemarker.core.FMParser.AndExpression(FMParser.java:585)
at freemarker.core.FMParser.OrExpression(FMParser.java:608)
at freemarker.core.FMParser.Expression(FMParser.java:221)
at freemarker.core.FMParser.StringOutput(FMParser.java:1061)
at freemarker.core.FMParser.Content(FMParser.java:2575)
at freemarker.core.FMParser.OptionalBlock(FMParser.java:2786)
at freemarker.core.FMParser.Root(FMParser.java:2958)
at freemarker.template.Template.<init>(Template.java:149)
at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:457)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:370)
at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:238)
at freemarker.template.Configuration.getTemplate(Configuration.java:493)
at freemarker.template.Configuration.getTemplate(Configuration.java:458)
at example.DocumentHandler.createDoc(DocumentHandler.java:64)
at example.DocumentHandler.main(DocumentHandler.java:139)
Exception in thread "main" java.lang.NullPointerException
at example.DocumentHandler.createDoc(DocumentHandler.java:96)
at example.DocumentHandler.main(DocumentHandler.java:139)
求帮助啊!本人新手菜鸟一枚。。。
------最佳解决方案--------------------
freemarker.core.ParseException——这个意思就是转换错误,你可能某个freemarker的表达式写得有问题
[其他解释]
自己顶一下,求解答啊
[其他解释]
没人能给点意见吗
[其他解释]
我只是用了一个XML转成ftl格式的模板,错误位置(LINE 3 COLUMN 3011)是${title_name}中的${这个位置