天天看點

操作Excel的經典類

package com.css.common.excel;

import java.io.file;

import java.io.fileinputstream;

import java.io.filenotfoundexception;

import java.io.ioexception;

import java.io.inputstream;

import java.util.arraylist;

import java.util.list;

import javax.servlet.servletcontext;

import javax.servlet.http.httpservletresponse;

import org.apache.commons.logging.log;

import org.apache.commons.logging.logfactory;

import org.apache.struts2.interceptor.servletresponseaware;

import org.apache.struts2.util.servletcontextaware;

import com.css.common.util.dateutil;

import com.opensymphony.xwork2.actionsupport;

public class baseexcelaction extends actionsupport implements

  servletresponseaware, servletcontextaware {

 private static final log log = logfactory.getlog(baseexcelaction.class);

 private static final long serialversionuid = 1l;

 private httpservletresponse response;

 private servletcontext servletcontext;

 protected string excelexport() throws exception {

  response.setcontenttype("text/html");

  try {

   string contexttitle = "百強問題調查資訊表";

   string realpath = servletcontext.getrealpath("/");

   log.debug("realpath=" + realpath);

   list columncontextlist = new arraylist();

   // 拼裝

   excelexport(realpath, contexttitle, columncontextlist);

  } catch (exception e) {

   log.fatal("導出問卷資訊結束", e);

  }

  return none;

 }

 /**

  * 從db中導出資料到excel

  */

 protected void excelexport(string realpath, string contexttitle,

   list columncontextlist) throws exception, filenotfoundexception,

   ioexception {

  // 把資料寫入excel

  if (columncontextlist != null) {

   string filename = dateutil.getlocaldatetime() + ".xls";

   iexcelexport excel = new quesexcelexportutil(contexttitle,columncontextlist);

   // 1.輸出到指定檔案夾

   excel.exportexcel(new file(realpath + filename));

   log.debug("filename=" + filename);

   log.debug("恭喜您!excel導出成功");

   file file = new file(realpath + filename);

   long _l = file.length();

   inputstream in = new fileinputstream(file);

   if (in != null) {

    response.reset();

    response.setcontenttype("application/x-msdownload");

    response.setheader("content-disposition","attachment; filename=" + filename);

    // 以上輸出檔案元資訊

    response.setcontentlength((int) _l); // 設定輸入檔案長度

    byte[] _b = new byte[2048];

    int _llen = 0;

    while ((_llen = in.read(_b)) > 0) {

     response.getoutputstream().write(_b, 0, _llen); // 向浏覽器輸出

    }

    in.close(); // 關閉檔案輸入流

    response.flushbuffer();

   }

   new file(realpath + filename).delete();

  * 從excel中導入資料到db

 protected void excelimport(){

  //

 public void setservletresponse(httpservletresponse response) {

  this.response = response;

 public void setservletcontext(servletcontext servletcontext) {

  this.servletcontext = servletcontext;

}

上一篇: IExcelExport
下一篇: ProxoolListener