先来个最终结果样式:
第一步: 传参,后期可根据自己需要进行调整。我这里需要的是
quarter 代表季度
dptid 部门编号
根据接受过来的参数进行文档命名。
UserInfo userInfo=(UserInfo)request.getSession().getAttribute("userInfo");
String userid=userInfo.getUserID();
String quarter= request.getParameter("quarter");
String dptid= request.getParameter("dptid");/***********************EXCEL导出部分**************************/String str3=FileInfoTools.getSystemFilePath()+ "/documentTemp/";
File file= newFile(str3);if (!file.exists() && !file.isDirectory()) {
file.mkdir();
}
String names= new SimpleDateFormat("yyyyMMddhhmmssSSS").format(newDate());
String ourl= str3 + names + "_"+userid+".xls";
FileOutputStream fos= null;
String fileName= "";try{
HSSFWorkbook wb= new HSSFWorkbook();//创建工作薄
fileName = "安全可控导出"+"_"+userid+"_"+names+".xls";
DBManager dbm= newDBManager();
System.out.println("quarter+"+quarter+"dptid="+dptid);try{
dbm.newConnection();
String str= "select departmentname from dpt_department where departmentid='"+dptid+"'"; //获取唯一id
String dptName =dbm.executeQueryString(str);
fileName=dptName+"部门安全可控清单汇总"+"_"+userid+"_"+names+".xls";//创建sheet页,并写入内容
createSheet(dbm,wb,getCardInfo(dbm,quarter,dptid));
}catch(Exception e){
e.printStackTrace();
}finally{
dbm.closeConnection();
}
File ff= newFile(ourl);if(ff.exists()) {
ff.delete();
}
fos= newFileOutputStream(ourl);
wb.write(fos);
fos.close();
String u= "/project/system/fileAction.do?filePath=" +URLEncoder.encode(ourl)+ "&fileName=" +URLEncoder.encode(fileName);
response.sendRedirect(u);
}catch(Exception e) {
e.printStackTrace();
}
第二步:创建sheet页签
public voidcreateSheet(DBManager dbm,HSSFWorkbook w,Vector vt) throws Exception{for(int i=0;i
Hashtable ht= (Hashtable)vt.get(i);
String id= (String)ht.get("id");
String quarter= (String)ht.get("quarter");
HSSFSheet sheet= w.createSheet("安全可控清单");//写入数据
wirteSheet(dbm,sheet,w,id,quarter);
}
}
我这里页签是固定的名称
可根据自己的需要根据参数来进行判断页签。如果多个页签的话 可以这样:
public voidcreateSheet(DBManager dbm,HSSFWorkbook w,Vector vt) throws Exception{
Hashtable temp= (Hashtable)vt.get(0);
String id= (String)temp.get("id");
String quarter= (String)temp.get("quarter");
System.out.println("DumpExcel.jsp id"+id+"quarter:"+quarter);//查询得到当前模板对应的页签
String sheets = "select a7 from a_templet_col_num where templet_id='"+id+"' group by a7 order by a7";
Vector sheetsVc=dbm.execu