导出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. Linux-PS1变量详解

    1.PS1 要修改linux终端命令行颜色,我们需要用到PS1,PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置.在终端输入命令:#set,即可在输出中找到关于PS1的定义如下: ...

  2. matplotlib散点图笔记

    定义: 由一组不连续的点完成的图形 散点图: 包含正相关性,负相关性和不相关性. 散点图生成函数: plt.scatter(x,y) 演示代码如下: import numpy as np import ...

  3. double 失真例子

    public static void main(String[] args) {  // TODO Auto-generated method stub  double ab=821.20;  dou ...

  4. ActiveMQ学习总结(7)——ActiveMQ使用场景

    MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...

  5. 洛谷 P1553 数字反转(升级版)

    P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调 ...

  6. [React Native] Animate the Scale of a React Native Button using Animated.spring

    In this lesson we will use Animated.spring and TouchableWithoutFeedback to animate the scale of a bu ...

  7. actionmode-ActionMode以及它的menu使用

    下图左边效果为Context Menu右边效果为ActionMode. ActionMode 其实就是替换在actionbar的位置上显示的一个控件.它跟actionbar一样,也是一种导航作用.只不 ...

  8. java创建节点和单向链表

    package datastructure; public class Node { private Object data; private Node next; public Node() { t ...

  9. jqXHR对象

    //$.ajax()返回的对象就是jqXHR对象 var jqXHR = $.ajax({ type:'post', url:'test.php', data:$('form').serialize( ...

  10. php学习笔记3

    1.PHP 定界符 EOF 的作用就是按照原样,包括换行格式什么的,输出在其内部的东西: 2.在 PHP 定界符 EOF 中的任何特殊字符都不需要转义: 3.PHP 定界符 EOF