ssh整合web导出excel案例

来源:互联网 发布:2017淘宝客程序哪个好 编辑:程序博客网 时间:2024/05/21 11:20

biz代码

/**
  * 导出当前页到excel文件
  * @param page
  * @param pageSize
  * @param response
  */
 /*void pageToExcel(int pages, int size,HttpServletResponse response);**/
 /**
  * 导出数据库全部信息到excel文件
  * @param response
  */
 void allToExcel(HttpServletResponse response);
 
 /**
  * 导出功能实现
  * @param list 要导出的数据
  * @param fileName 下载显示的文件名
  * @param response
  */
 void toExcel(List<P_Cdma> list,String fileName, HttpServletResponse response);

biz.impl代码


 //导出当前页到excel文件
 public void pageToExcel(int pages, int size, HttpServletResponse response) {
  // TODO Auto-generated method stub
  //需要导出的数据
  List<P_Cdma> list=query(pages, size);
  //下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)
  String fileName=(pages-1)*size+1+"-"+pages*size+".xls";
  //调用导出的具体实现方法
  toExcel(list,fileName,response);
 }
 **/
 
 //导出数据库全部信息到excel文件
 public void allToExcel(HttpServletResponse response) {
  //需要导出的数据
  List<P_Cdma> list=dao.queryAll("from P_Cdma");
//下载是显示给用户的文件名(如果是中文需要作一定处理,否则会有乱码)
  String fileName="all.xls";
  //调用导出的具体实现方法
  toExcel(list,fileName,response);
  
 }
 
 //导出的具体实现方法
 public void toExcel(List<P_Cdma> list, String fileName,
   HttpServletResponse response) {
  try {
   //对文件名作处理,避免中文乱码问题
   String name = new String(fileName.getBytes("gbk"),"iso8859-1");
   //设置response相应属性,设置为下载
   response.setContentType("application/x-msdownload");
   response.setHeader("Content-Disposition", "attachment;filename="+name);
   //获得response中的输出流
   OutputStream out=response.getOutputStream();
//excel表格第一行标题,本例中不采用poi或jxl,只对每个单元属性后面添//加\t,每行结束加\n。这是excel文件的基本属性。
   String head="序号\t部门\t工号\t名字\t保底生效日\t保底到期日\t套餐金额\t保底金额\t天翼号码\t共振号码\n";
   //编码应该根据本地编码来确定。如果是台湾同胞,这里需要改为big5
   out.write(head.getBytes("gbk"));
   for(P_Cdma a:list){
  //加上\t,\n等分隔符,写出文件,当文件以.xls命名时,打开即为普通excel文件
    String s=a.getId()+"\t"+a.getDep()+"\t"+a.getJobnumber()+"\t"+a.getName()+"\t"
    +a.getDays()+"\t"+a.getTodays()+"\t"+a.getPackageAmt()+"\t"+a.getPackageAmt()+"\t"+a.getCdmaNum().toString()+"\t"+a.getTelNum()+"\n";
    out.write(s.getBytes("gbk"));
   }
   out.flush();
   out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }

action代码

注:此ACTION记得继承BaseAction

/**
   * 导出当前页
   */
  /**
  public void pageToExcel(){
   pbiz.pageToExcel(page, size,response);
  }*/
  
  /**
   * 导出数据库全部信息
   */
  public void allToExcel(){
   pbiz.allToExcel(response);
  }


/**只为方便使用response对象
 * @author kunlong_chen
 *
 */
public class BaseAction extends ActionSupport
      implements RequestAware,
         SessionAware,
         ApplicationAware,
         ParameterAware,
         ServletContextAware,
         ServletRequestAware,
         ServletResponseAware
{
 protected Map<String,Object> requestMap;
 protected Map<String,Object> sessionMap;
 protected Map<String,Object> applicationMap;
 protected Map<String,String[]> parametersMap;
 
 protected HttpServletRequest request;
 protected HttpServletResponse response;
 protected ServletContext application;
 
 public void setRequest(Map<String, Object> arg0) {
  this.requestMap=arg0;
 }

 public void setSession(Map<String, Object> arg0) {
  this.sessionMap=arg0;
 }

 public void setApplication(Map<String, Object> arg0) {
  this.applicationMap=arg0;
 }

 public void setParameters(Map<String, String[]> arg0) {
  this.parametersMap=arg0;
 }

 public void setServletContext(ServletContext arg0) {
  this.application=arg0;
 }

 public void setServletRequest(HttpServletRequest arg0) {
  this.request=arg0;
 }

 public void setServletResponse(HttpServletResponse arg0) {
  this.response=arg0;
 }

}

struts.xml代码

 <!-- 导出当前页
   <action name="pageToExcel" class="action.PhonesNumAction" method="pageToExcel">
  </action>
  -->
   <!--Excel的导出  -->
  <action name="allToExcel" class="action.PhonesNumAction" method="allToExcel">
   <interceptor-ref name="mydefault"/>
  </action>

jsp代码

  <img alt="" src="images/edit.gif">
         <a title="导出到Excel"  href="#"  onclick="listAll()"  style="cursor: pointer; color:white;">导出到Excel</a>

javascript代码

   /*Excel导出**/
function listAll(){
    var flag=confirm("全部导出可能花费较长时间,确定全部导出吗?");
    if(flag){
     location="allToExcel.action";
    }
   }

 

 

原创粉丝点击