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;
}