本文目录一览:
- 1、freemarker 导出word 文档 怎么写
- 2、用freemarker 生成word,打开word xml字符非法!这是什么原因?
- 3、如何用freemarker动态生成word目录
- 4、java freemarker引擎 导出word文档
- 5、freemark在linux上生成word以后,怎么转pdf
freemarker 导出word 文档 怎么写
将要导出的Word另存为xml格式的文件,打开xml 在其中添加freemarker标签,然后另存为outChairDoc.ftl文件.
第一步要加入Freemarker.jar包。
Servlet代码如下:在outChairDoc.ftl放在包cn.skyclass.jiaowu.freemarker.template下
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
try {
createDoc(response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void createDoc(HttpServletResponse response) throws Exception {
// 要填入模本的数据文件
Map dataMap = new HashMap();
dataMap.put("docTitle", "fdfdfdfdfdfdf用户信息");
ListChairInfo list = new ArrayListChairInfo();
ChairInfo chairInfo = new ChairInfo();
chairInfo.setChairTitle("dfdfd");
chairInfo.setTeacherName("tea");
chairInfo.setStartTime(new Date());
chairInfo.setPlace("dfdfd");
list.add(chairInfo);
dataMap.put("chairInfoList", list);
// 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库装载,
// 这里我们的模板是放在com.havenliu.document.template包下面
configuration.setClassForTemplateLoading(this.getClass(),
"/cn/skyclass/jiaowu/freemarker/template");
Template t = null;
try {
// test.ftl为要装载的模板
t = configuration.getTemplate("outChairDoc.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
}
// 输出文档路径及名称
String fileName="讲座列表.doc";
response.setContentType("application/msword");
response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));//可防止导出的文件乱码
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
t.process(dataMap, out);
out.close();
}
用freemarker 生成word,打开word xml字符非法!这是什么原因?
一般是包含 等运算符号, freemarker 认为这些是数学运算符 两边的要进行运算,但我们实际上可能是字符串之类的无法运算,所以就报错,我的解决办法是替换成转义字符,比如 就替换成 我忘了这情况是不是报的非法字符,反正就是word打不开。
如何用freemarker动态生成word目录
首先,通过xml模板可以将基本上所有的格式都事先锁定,包括页码和分页,只要你事先预设好就能够通过freemarker实现生成,
接下来就是我这个问题了,目录怎么解决,下面是解决思路:
1:目录的内容可以根据之前其他的内容一样解决,通过XML模板预先设置好,
2:目录的页码已经研究过是不能直接通过xml模板实现动态对应了(至少我没搞定0.0)
3:由于不能够一步到位,我采取了在模板中预留了一页空白页,只留了抬头的目录两个字,然后通过查询目录二字进行目录的生成,
这个功能也是我刚刚折腾出来的0.0目前还没测试能不能用模板生成目录后再更新目录0.0,不过想想可以直接生成目录应该就不用这么麻烦了,至于word生成后的修改0.0我觉得还是以后再说吧.....
整体来说应该还算完美解决了,代码我就不在这贴出来了~
虽然中间折腾了半天走了半天弯路~
讲道理还是用的jacob来实现的。。
java freemarker引擎 导出word文档
要生成的数据,在java后台必须是用Map格式,这个你检查一下有没有问题。如果有list,也要放到map里面去。
HashMapString, Object dataMap = new HashMapString, Object();
Configuration conf = new Configuration();
Template t = conf.getTemplate(fileName);
File docFile = new File(filePath + "/" + docName);
out = new OutputStreamWriter(new FileOutputStream(docFile), "UTF-8");
t.process(dataMap, out);
freemark在linux上生成word以后,怎么转pdf
freemark在linux上生成word以后转pdf直接另存为即可。
工具:word2013
步骤:
1、打开word2013,点击文件,选择另存为。选择其他格式。
2、在另存为界面,选择格式pdf,点击保存即可完成。
注:word2010以下版本另存为没有pdf格式,需下载插件后,才能直接另存为pdf格式。2010以上的版本才可以直接另存为。