导出word工具类

package util;

import java.io.IOException;
import java.io.Writer;
import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException; public class ExportWordUtil { private static final Logger log = LoggerFactory.getLogger(ExportWordUtil.class); /**
* 导出word文档
* @param response
* @param fileName 下载文件名称
* @param model 模板名称
* @param dataMap 导出数据
*/
public static void createDoc(HttpServletResponse response, String fileName, String model, Map<String,Object> dataMap) {
response.setContentType("application/x-download;charset=UTF-8");
try {
fileName = new String(fileName.getBytes("GBK"),"ISO-8859-1");
} catch (Exception e) {
log.error("文件名编码出错!");
}
//给文件名加上时间戳
fileName += DateTimeUtils.getNowTimeShortString() + ".doc";
response.addHeader("Content-disposition", "filename="+fileName+";charset=UTF-8");
//设置模本装置方法和路径,默认指定在/resources/exportWord目录下
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
configuration.setClassForTemplateLoading(ExportWordUtil.class, "/resources/exportWord");
Template template = null;
try {
//装载模板
template = configuration.getTemplate(model);
template.setEncoding("UTF-8");
} catch (IOException e) {
log.error("导出word装载模版出错!");
e.printStackTrace();
}
Writer out = null;
try {
//输出对象,并对文件名进行编码
out = response.getWriter();
} catch (IOException e) {
log.error("导出word输出流创建错误!");
e.printStackTrace();
}
try {
//装载并输出数据,生成word文档
template.process(dataMap, out);
} catch (TemplateException e) {
e.printStackTrace();
log.error("导出word出错!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

如何在action中使用:

    /**
* 导出
* @param id
* @param response
* @return
*/
@RequestMapping("/util/export.do")
public void export(HttpServletResponse response) {
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("xm", "小花猫");
     daaMap.put("age", "3");
ExportWordUtil.createDoc(response, "小花猫信息", "xhmxx.ftl", dataMap);
}

java导出word直接下载的更多相关文章

  1. java 导出word 并下载

    记录一下导出操作 源码: /************ * 导出word 并下载 * @param id 房号记录编号 * ***********************/ @RequestMappin ...

  2. java导出word的6种方式(复制来的文章)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  3. java导出word文件

    java导出word文件 test5.ftl文件生存方法, 第一步:用word新建test5.doc,填写完整模板,将需导出数据用${}代替 第二步:将test5.doc另存为test5.xml 第三 ...

  4. [转载]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  5. [原创]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  6. java导出word的6种方式(转发)

    来自: http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前 ...

  7. Freemarker + xml 实现Java导出word

    前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选择功能强大的freemarker+固定格式之后的wordxml实现导出功能.导出word的代码是可 ...

  8. Java导出freemarker实现下载word文档格式功能

    首先呢,先说一下制作freemarker模板步骤, 1. 在WPS上写出所要的下载的word格式当做模板 2. 把模板内不固定的内容(例:从数据库读取的信息)写成123或者好代替的文字标注 3. 把固 ...

  9. Java导出Word利用freemarker(含图片)

    制作Word模版 建议使用高版本的office做,尽量不要用WPS做,生成xml会出现乱码 编码要统一,推荐UTF-8 建好模板,将模板另存为xml格式,建议原来模板不要删,xml的如果后期打不开,还 ...

随机推荐

  1. 趣题: 按二进制中1的个数枚举1~2^n (位运算技巧)

    ; ; k <= n; k++){ << k)-,u = << n; s < u;){ ;i < n;i++) printf(-i)&); print ...

  2. centos的dns配置总结

    找的一篇好的存根 DNS正反向解析 DNS(Domain Name Service)域名服务.就是域名解析服务器.所谓名称解析的过程就是某个应用程序基于某个搜索键在指定的数据库中查询.而后查询到某些对 ...

  3. 源代码看CoordinatorLayout.Behavior原理

    在上一篇博客CoordinatorLayout高级使用方法-自己定义Behavior中,我们介绍了怎样去自己定义一个CoordinatorLayout的Behavior.通过文章也能够看出Behavi ...

  4. 比较s+=4;和s=s+4;的不同

    1.s=s+4: public class Test { public static void main(String[] args){ short s=3; // s=s+4; //描述 资源 路径 ...

  5. IAR FOR STM8 学习笔记 固件库 GPIO

    经过一番挣扎,还是决定使用官方的固件库了.. 从网上下一个STM8S的固件库,记得是FOR IAR的. 找到里面的IAR模板就可以开始用了. 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先 ...

  6. 19.Node.js EventEmitter

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js里 ...

  7. 相对路径 System.Web HttpServerUtilityBase Server.MapPath("~/")

    相对路径 System.Web  HttpServerUtilityBase  Server.MapPath("~/")

  8. ZOJ QS Network

    QS Network Time Limit: 2 Seconds      Memory Limit: 65536 KB Sunny Cup 2003 - Preliminary Round Apri ...

  9. Codeforces Round #193 (Div. 2) 部分题解

    A:直接判断前三项是否相等 int main() { //FIN; //CHEAT; int n; cin>>n; getchar(); ]; gets(a); int len = str ...

  10. JS学习笔记 - Try / Catch / Finally

    <body> <p>请输入 5 和 10 之间的一个数:</p> <input id="demo" type="text&quo ...