java导出word文件

test5.ftl文件生存方法,

第一步:用word新建test5.doc,填写完整模板,将需导出数据用${}代替

第二步:将test5.doc另存为test5.xml

第三部:将test5.xml重命名为test5.ftl

第四步:用记事本打开test5.ftl,在${}大括号之间填写相应的属性即可

1.jsp中的js代码

 //导表
  function exportExcel(){

   window.location.href="<%=basePath%>student!myExportWord.action";
  }

2、action中的代码(StudentAction.java)

public void myExportWord(){
  
  Student student = new Student();
  student.setName("张国荣");
  student.setCode("123456789");
  student.setAge("45");
  student.setGrade("gradeOne");
  student.setTest("国际巨星");
  student.setXingbie("man");  
  
  try {
   DocumentHandler dh = new DocumentHandler();
   String wordName = "学生信息表";
   dh.createDoc(student, "test5.ftl", getResponse(), wordName);
  } catch (IOException e) {
   e.printStackTrace();
  } 
 }

3、DocumentHandler工具类代码如下:

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.huating.wgsrpt.report.model.Lawpunishment;

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(Object bean,String url,HttpServletResponse response,String filepath) throws IOException {
  
  //把对象变成map
     Class<? extends Object> type = bean.getClass(); 
         Map<String, Object> dataMap = new HashMap<String, Object>(); 
  
         try { 
             BeanInfo beanInfo = Introspector.getBeanInfo(type); 
             PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); 
             for (PropertyDescriptor descriptor : propertyDescriptors) { 
                 String propertyName = descriptor.getName(); 
                 if (!propertyName.equals("class")) { 
                     Method readMethod = descriptor.getReadMethod(); 
                     Object result = readMethod.invoke(bean, new Object[0]);
                     if(result !=null)
                     {
                      dataMap.put(propertyName,result+"");
                     }
                     else{
                      dataMap.put(propertyName,"");
                      
                     }
                                     
                 } 
             } 
         } catch (IntrospectionException e) { 
             throw new RuntimeException("分析类属性失败", e); 
         } catch (IllegalAccessException e) { 
             throw new RuntimeException("分析类属性失败", e); 
         } catch (InvocationTargetException e) { 
             throw new RuntimeException("分析类属性失败", e); 
         }
  
  //要填入模本的数据文件
 
   System.out.println(dataMap.toString());
  configuration.setClassForTemplateLoading(this.getClass(), "/wordxml/");//表示src下的wordxml目录
  
  Template t=null;
  try {
   //test.ftl为要装载的模板
   t = configuration.getTemplate(url);
  } catch (IOException e) {
   e.printStackTrace();
  }
  //输出文档路径及名称
  response.setCharacterEncoding("UTF-8");
        filepath=java.net.URLEncoder.encode(filepath+".doc", "UTF-8");
        response.setContentType("application/msword");
  response.setHeader("Content-disposition", "attachment; filename="+new String(filepath.getBytes("UTF-8"),"GBK"));
  Writer out = response.getWriter();
        try {
   t.process(dataMap, out);
  } catch (TemplateException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

java导出word文件的更多相关文章

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

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

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

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

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

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

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

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

  5. Java读写Word文件常用技术

      Java操作操作Word文件,最近花了几天时间解决使用Word模板导出数据的问题,收集到一些资料分享下. 常见的技术如下: 1.POI(兼容doc.docx文件) 官方网站:http://poi. ...

  6. 利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

    https://blog.csdn.net/Fishroad/article/details/47951061?locationNum=2&fps=1 先下载jacob.jar包.解压后将ja ...

  7. java导出word直接下载

    导出word工具类 package util; import java.io.IOException; import java.io.Writer; import java.util.Map; imp ...

  8. java 导出word 并下载

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

  9. WordUtil java导出word工具类

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedWriter ...

随机推荐

  1. [svc] cisco router as ca server

    把cisco路由器配置成ca服务器 参考 clock set 10:00:00 Dec 23 2017 conf t crypto key generate rsa general-keys labe ...

  2. [svc]kill pkill killall管理进程

    进程讲解 操作配置 http://www.centoscn.com/CentOS/help/2013/0809/1218.html 终止一个进程或终止一个正在运行的程序,一般是通过 kill .kil ...

  3. 基于Django的独立运行python脚本开发

    Django框架很方便,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path ...

  4. Serviceability

    http://hg.openjdk.java.net/jdk7u/jdk7u2/hotspot/file/6259c6d3bbb7/agent/doc/clhsdb.html http://blog. ...

  5. ny540 奇怪的排序 简单题

    奇怪的排序 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 最近,Dr. Kong 新设计一个机器人Bill.这台机器人很聪明,会做许多事情.惟独对自然数的理解与人类不一 ...

  6. Win7  CMD大全

    Win7  CMD大全  compmgmt.msc---计算机管理 conf—-启动 netmeeting charmap–-启动字符映射表 calc—-启动计算器 chkdsk.exe–-Chkds ...

  7. display与visibility的区别

    style.visibility和style.display都可以实现对页的隐藏,但visibility要占用域的空间,而display则不占用 将元素display属性设为 block,会在该元素后 ...

  8. Loadrunner监控windows系统“找不到网络路径”问题解决

    一.监控windows系统: 1.监视连接前的准备工作 1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Ser ...

  9. [转]采购文件中 RFI、RFQ、RFP、IFB的区别

    原文:http://www.douban.com/group/topic/23426427/ [PMBOK的描述]  采购文件用于征求潜在卖方的建议书.如果主要依据价格来选择卖方(如购买商业或标准产品 ...

  10. java华为面试题

    JAVA方面 1 面向对象的特征有哪些方面 2 String是最基本的数据类型吗? 3 int 和 Integer 有什么区别 4 String 和StringBuffer的区别 5运行时异常与一般异 ...