try {
//執行檢索
cmsSupSubmitSiteStatBeanList = cmsSupSubmitSiteInfoMngService.govStat(condition);
//根據條件查找
cmsSupSubmitSiteInfoMngBeanList = cmsSupSubmitSiteInfoMngService.findByConditionStat(condition);
//臨時文件位置
String path=this.getServletConfig().getServletContext().getRealPath("\\upload\\temp");
File ftemp=new File(path);
if (!ftemp.exists()) {
ftemp.mkdirs();//不存在則創建
}
//生成臨時文件名
String saveFilename = DateUtil.formatNowDateTime("yyyyMMddHHmmssSSS")+getNewName()+ ".csv";
WritableWorkbook book = Workbook.createWorkbook(new File(path + "\\"+saveFilename));// 創建excel文件
// 生成名為“第一頁”的工作表,參數0表示這是第一頁
WritableSheet sheet = book.createSheet("網站信息統計表", 0);
// 在Label對象的構造子中指名單元格位置是第一列第一行(0,0)
//標題
String[] title1 = {"單位名稱"
,"1月"
,"2月"
,"3月"
,"4月"
,"5月"
,"6月"
,"7月"
,"8月"
,"9月"
,"10月"
,"11月"
,"12月"
,"總報送量"
,"報送率"
,"分數"
,"加減分"
,"總分數"
};
//表頭
for(int i=0;i<title1.length;i++){
//第n列第一行標識表頭
Label label = new Label(i, 0, title1[i]);
sheet.addCell(label); //將定義好的單元格添加到工作表中
}
//內容
for (int i = 0; i < cmsSupSubmitSiteStatBeanList.size(); i++) {
CmsSupSubmitSiteStatBean bean = cmsSupSubmitSiteStatBeanList.get(i);
//內容
String[] rs1 = { bean.getDeptName()
,String.valueOf(bean.getUsed01()) + "/" + String.valueOf(bean.getSup01())
,String.valueOf(bean.getUsed02()) + "/" + String.valueOf(bean.getSup02())
,String.valueOf(bean.getUsed03()) + "/" + String.valueOf(bean.getSup03())
,String.valueOf(bean.getUsed04()) + "/" + String.valueOf(bean.getSup04())
,String.valueOf(bean.getUsed05()) + "/" + String.valueOf(bean.getSup05())
,String.valueOf(bean.getUsed06()) + "/" + String.valueOf(bean.getSup06())
,String.valueOf(bean.getUsed07()) + "/" + String.valueOf(bean.getSup07())
,String.valueOf(bean.getUsed08()) + "/" + String.valueOf(bean.getSup08())
,String.valueOf(bean.getUsed09()) + "/" + String.valueOf(bean.getSup09())
,String.valueOf(bean.getUsed10()) + "/" + String.valueOf(bean.getSup10())
,String.valueOf(bean.getUsed11()) + "/" + String.valueOf(bean.getSup11())
,String.valueOf(bean.getUsed12()) + "/" + String.valueOf(bean.getSup12())
,String.valueOf(bean.getTolUsed()) + "/" + String.valueOf(bean.getTolSup())
,String.valueOf(bean.getUsedRate()) + "%"
,String.valueOf(bean.getPoint())
,String.valueOf(bean.getPmPoint())
,String.valueOf(bean.getTolPoint())
};
//內容從第二行開始打印
for (int j = 0; j < rs1.length; j++) {
Label label = new Label(j, i+1, rs1[j]);
sheet.addCell(label);
}
}
// 打印詳細========================================================================================
String[] stDtl = { "單位名稱"
,"標題"
,"加減分"
,"報送時間"
};
WritableSheet sheet2 = book.createSheet("網站信息采用標題", 0);
// 在Label對象的構造子中指名單元格位置是第一列第一行(0,0)
//標題
//表頭
for(int i=0;i<stDtl.length;i++){
//第n列第一行標識表頭
Label labe2 = new Label(i, 0, stDtl[i]);
sheet2.addCell(labe2);
}
//內容
String titleVar="";
int flagNum=0;
for( int i = 0; i < cmsSupSubmitSiteInfoMngBeanList.size(); i ++ ){
CmsSupSubmitSiteInfoMngBean bean = cmsSupSubmitSiteInfoMngBeanList.get(i);
String[] rs2 = {bean.getSpDeptName()
,bean.getSupTitle()
,String.valueOf(bean.getMsgPmPoint())
,bean.getAddDate()
};
if(!titleVar.equals(rs2[0])){
for (int x =0; x < rs2.length; x++) {
Label labeVar2 = new Label(x, i+1, rs2[x]);
sheet2.addCell(labeVar2);
}
}else{
//內容從第二行開始打印
//sheet.mergeCells(int col1,int row1,int col2,int row2);//左上角到右下角
sheet.mergeCells(0,1, 0,flagNum);//左上角到右下角 ,列,行,列,行
for (int j =1; j < rs2.length; j++) {
Label labe2 = new Label(j, i+1, rs2[j]);
sheet2.addCell(labe2);
}
}
flagNum++;
titleVar=rs2[0];
}
// // 將定義好的單元格添加到工作表中
// /*
// * 生成一個保存數字的單元格 必須使用Number的完整包路徑,否則有語法歧義 單元格位置是第二列,第一行,
// 值為789.123
// */
// // jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );
// // sheet.addCell(number);
// 寫入數據并關閉文件
book.write();
book.close();
// 將生成的文件下載
AttUploadsServlet servlet=new AttUploadsServlet();
servlet.downLoadFile(req, resp, "網站信息統計.csv", path + "\\" + saveFilename);
} catch (Exception e) {
System.out.println(e);
}
2、下載附件:
}
多學一點:劃服務器下載附件
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.*"%>
<%@page import="java.io.File"%>
<%@page import="java.io.OutputStream"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.net.URL"%>
<%@page import="java.net.URLConnection"%>
<!-- 以上這行設定本網頁為Word格式的網頁 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<%
String refFilePath= request.getRealPath(new String(request.getParameter("fileSrc").getBytes("ISO-8859-1"),"UTF-8"));
//String docName = new String(request.getParameter("fileName").getBytes("ISO-8859-1"),"UTF-8");
request.setCharacterEncoding("UTF-8");
String docName = request.getParameter("fileName");
try{
/* 創建輸入流 */
InputStream is = this.getClass().getClassLoader().getResourceAsStream("project.properties");
Properties p = new Properties();
try {
p.load(is); //Properties 對象已生成,包括文件中的數據
}catch(IOException e){
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
String refFp=p.getProperty("xzql.refFilePath");
URL ul=new URL(refFp+new String(request.getParameter("fileSrc").getBytes("ISO-8859-1"),"UTF-8"));
URLConnection conn=ul.openConnection();
InputStream inStream = conn.getInputStream();
String disName = java.net.URLEncoder.encode(docName, "UTF-8");
response.reset();
response.setContentType("application/x-msdownload");
response.addHeader("Content-Disposition",
"attachment; filename=\"" + disName + "\"");
byte[] buf = new byte[4096];
/* 創建輸出流 */
ServletOutputStream servletOS = response.getOutputStream();
int readLength;
int alllength=0;
while (((readLength = inStream.read(buf)) != -1)) {
servletOS.write(buf, 0, readLength);
alllength+= readLength;
}
response.setContentLength(alllength);
inStream.close();
servletOS.flush();
servletOS.close();
}catch(Exception e){
out.print("文件不存在! ");
e.printStackTrace();
}
%>
</html>
2).struts2下載Excel:
http://blog.csdn.net/weinianjie1/article/details/5941042