首页 > Web开发 > 详细

Struts Ajax 导出Excel

时间:2015-11-12 16:07:59      阅读:367      评论:0      收藏:0      [点我收藏+]

下面讲解一种通过ajax请求,然后导出Excel的方法。

struts的配置如下:

<package name="crankcall" extends="json-default" namespace="/crankcall">
  <!-- 下载导出excle -->
  <action name="exportExcel" class="....action.ExportExcelAction" method="download" >
   <result name="excel" type="stream"> 
       <!-- ISO8859-1 -->
       <param name="contentType">application/vnd.ms-excel,charset=UTF-8</param>
       <param name="contentDisposition">

                         attachment;filename="${fileName}.xlsx"

       </param> 
       <param name="bufferSize">4096</param>
       <param name="inputName">excelFile</param> 
   </result>
  </action>
 </package>

ExportExcelAction中的方法如下:

pubic InputStream excelFile; // 下载文件流

private String fileName; // 下载文件名称


public String download() throws Exception {

      /*

         使用POI来创建表格,datas为要导出的数据。

         WorkbookUtil为自定义的工具类

     * /
      XSSFWorkbook workbook =WorkbookUtil.createWorkBook(datas);
      if(workbook == null){
          log.info("导出数据失败");
           return ERROR ;
      }
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      workbook.write(output);
      byte[] ba = output.toByteArray();
      excelFile = new ByteArrayInputStream(ba);
      output.flush();
      output.close();
      return "excel";
}


public String getFileName() {
      String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) ;
      fileName = fileName+timestamp ;
      try {
           fileName = new String(fileName.getBytes(),"ISO8859-1") ;
      } catch (UnsupportedEncodingException e) {
           fileName = timestamp ;
      }
      return fileName;
 }

如此一来后台就准备就绪了。下面看看前台怎么做。

1,创建一个JS方法

function exportExcelByForm(fileName){
       var mform = document.getElementById(‘excel_export_form‘) ;
       if(mform){
             document.body.removeChild(mform) ;
       }
       mfrom = document.createElement("form");
       mfrom.id = "excel_export_form" ;
       mfrom.target="_blank" ;
       mfrom.method="post" ;
       mfrom.action="crankcall/export/exportExcel.action" ;
       mfrom.style.display="none" ;
 
       var fname = document.createElement("input");
       fname.type = "hidden";
       fname.name = "fileName";
       fname.value = fileName ;

       mfrom.appendChild(fname);


       //TODO 可以继续传递更多的参数或者数据到服务端
 
       document.body.appendChild(mfrom);
       mfrom.submit();
}

2,然后可以通过按钮等方式来触发该方法达到下载的作用,例如:

exportExcelByForm("XX报表");

以上的方式是通过form表单的提交打开新窗口的方式来达到下载的目的,同时窗口打开后会自动的关闭。

本文出自 “因简单而自在” 博客,请务必保留此出处http://dengshuangfu.blog.51cto.com/8794650/1712179

Struts Ajax 导出Excel

原文:http://dengshuangfu.blog.51cto.com/8794650/1712179

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!