页面放置一个button进行点击导出事件

<h:commandLink target="_parent" value="导出"

           action="#{eveluatesubject.doSaveExcel}"

           styleClass="cssButtonBG">

</h:commandLink>

          

后台的导出方法

/**

  * 导出EXCEL

  * 

  * @param request

  * @return

  */

 public String doSaveExcel() {

  HttpServletRequest request = (HttpServletRequest) FacesContext

    .getCurrentInstance().getExternalContext().getRequest();

  dooutof(request);

return null;

 }

public String dooutof(HttpServletRequest request) {

// 文件名与路径

  String realPath = request.getRealPath("");

  String fileName = "导出的文件名称.xls";

  File file = new File(realPath + "//xxfzpj//tempPath//");//导出文件存放的位置

  if (!file.exists()) {

   file.mkdirs();

  }

  realPath = realPath + "//xxfzpj//tempPath//" + fileName;

// 建立工作薄并写表头

  try {

   WritableWorkbook wwb = Workbook.createWorkbook(new File(realPath));

   WritableSheet ws = wwb.createSheet("Sheet1", 0);// 建立工作簿

// 写表头

   jxl.write.Label label1 = new jxl.write.Label(0, 0, "列1");

   jxl.write.Label label2 = new jxl.write.Label(1, 0, "列2");

   jxl.write.Label label3 = new jxl.write.Label(2, 0, "列3");

   jxl.write.Label label4 = new jxl.write.Label(3, 0, "列4");

   jxl.write.Label label5 = new jxl.write.Label(4, 0, "列5");

ws.addCell(label1);// 放入工作簿

   ws.addCell(label2);

   ws.addCell(label3);

   ws.addCell(label4);

   ws.addCell(label5);

// 写入信息

   List<Map> listmsg = 数据库中读出的内容(运行SQL);

for (int i = 0; i < listmsg.size(); i++) {

    label1 = new jxl.write.Label(0, i + 1, listmsg.get(i).get(

      "subject_id").toString().trim());// 建立第一列

    label2 = new jxl.write.Label(1, i + 1, listmsg.get(i).get(

      "subject_name").toString().trim());// 建立第二列

    if (listmsg.get(i).get("object_name") != null

      && "" != listmsg.get(i).get("object_name")) {

     label3 = new jxl.write.Label(2, i + 1, listmsg.get(i).get(

       "object_name").toString().trim());// 建立第三列

    } else {

     label3 = new jxl.write.Label(2, i + 1, "未定义评价对象名称!");

    }

    label4 = new jxl.write.Label(3, i + 1, listmsg.get(i).get(

      "mode_name").toString().trim());// 建立第四列

    label5 = new jxl.write.Label(4, i + 1, listmsg.get(i).get(

      "type_name").toString().trim());// 建立第五列

    ws.addCell(label1);// 放入工作簿

    ws.addCell(label2);

    ws.addCell(label3);

    ws.addCell(label4);

    ws.addCell(label5);

   }

// 写入Exel工作表

   wwb.write();

   // 关闭Excel工作薄对象

   wwb.close();

// 下载

   FacesContext ctx = FacesContext.getCurrentInstance();

String contentType = "application/x-download";

   HttpServletResponse response = (HttpServletResponse) ctx

     .getExternalContext().getResponse();

response.setContentType(contentType);

   response.setHeader("Content-Disposition", "attachment;filename="

     + new String(fileName.getBytes("gb2312"), "ISO8859-1"));

   HttpServletRequest request1 = (HttpServletRequest) FacesContext

     .getCurrentInstance().getExternalContext().getRequest();

ServletOutputStream out = response.getOutputStream();

byte[] bytes = new byte[0xffff];

   InputStream is = new FileInputStream(new File(realPath));

   int b = 0;

   while ((b = is.read(bytes, 0, 0xffff)) > 0) {

    out.write(bytes, 0, b);

   }

   is.close();

   out.flush();

   ctx.responseComplete();

} catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }// 此处建立路径

  return null;

 }

Java学习之道:Java操作Excel之导出下载的更多相关文章

  1. Java学习之道:Java 导出EXCEL

    1.Apache POI简单介绍  Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...

  2. Java学习之道:Java项目打包发布

    Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...

  3. java学习笔记07--日期操作类

    java学习笔记07--日期操作类   一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...

  4. 摘自:java夜未眠之java学习之道

    目前Java可以说是产业界和学术界最热门的语言,许多读者都很急切想把Java学好.除非是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的.花时间,不打紧,就是怕方法错误,事倍功半.我认为 ...

  5. 【JAVA】使用Aphache poi操作EXCEL 笔记

    1 下载poi,地址 http://poi.apache.org/ 选择3.9版本. 2 刚开始尝试 把poi.jar放在D:\Program Files\java\jdk1.6.0_20\lib(不 ...

  6. Java 学习笔记(16)——Java数据库操作

    数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...

  7. Java 学习笔记(14)—— 文件操作

    java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...

  8. Java学习之道:空指针错误求解救????????????

    运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...

  9. 【java学习笔记】文件操作

    文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...

随机推荐

  1. CentOS6软raid配置与管理

    事先添加硬盘设备sdb.sdc.sdd.sde.无论是物理硬盘还是虚拟硬盘,最好使用同型号同大小的硬盘. 创建raid设备 支持raid0.1.4.5.6级别 # mdadm -C /dev/md0 ...

  2. Problem H: STL——括号匹配

    Description 给出一堆括号,看其是否匹配,例如 ().()().(()) 这样的括号就匹配,       )(.)()) 而这样的括号就不匹配 Input 每一行代表一组测试样例,每组测试样 ...

  3. 小米Java程序员第二轮面试10个问题,你是否会被刷掉?

    近日,开发者头条上分享了一篇"小米java第二轮面经",有很多的java程序员表示非常有兴趣. 下面l就和各位分享小米java第二轮面经(华为java工程师笔试面试题可以看文章某尾 ...

  4. java 中 final 的用法

    /* final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋值.因为这个 ...

  5. JavaScript核心参考

    Array 方法 concat() 把元素衔接到数组中. every() 测试断言函数是否对每个数组元素都为真. filter() 返回满足断言函数的数组元素. forEach() 为数组的每一个元素 ...

  6. Spring知识整理

    Spring简介 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,用来管理和维护bean,其中的特点是IOC(控制反转) DI(依赖注入) AOP(面向切面) 容易和其他框 ...

  7. 基于gitHub+hexo搭建的个人博客

    文章导航 前期准备 安装hexo 修改hexo主题 自定义主题 部署本地文件到github查看 我的第一篇博客 前期准备 下载安装git命令行工具.node及npm环境 注册自己的GitHub账号 安 ...

  8. PLSQL锁表之后改如何操作

    (1)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects ...

  9. 71、django之Ajax续

    接上篇随笔.继续介绍ajax的使用. 上篇友情连接:http://www.cnblogs.com/liluning/p/7831169.html 本篇导航: Ajax响应参数 csrf 跨站请求伪造 ...

  10. ubuntu server小技巧(不定期更新)

    0.常用工具apt安装包名 # ssh服务器工具 apt-get install openssh-server # RabbitMQapt-get install rabbitmq-server # ...