思路是:jsp导出数据库学生信息到excel~先用了个下拉框选择了要导出的信息的班级~下拉框中有班级号“086”和“087”还有一个“全部”。然后根据下拉框的值从数据库中select然后POI导出
现在我选086和087导出excel都没问题~但选择全部的话导出的excel只有表头~底下的内容是空的!
请大虾们指点!!~~谢谢~!!~
下面是部分代码~~
- Java code
<% response.setContentType("text/html; charset=GBK"); request.setCharacterEncoding("GBK"); %><%String checkclass=request.getParameter("class");//out.println(checkclass);%> <% Class.forName("com.mysql.jdbc.Driver");//加载JDBC驱动程序 Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/suser?user=root&password=nina900416");//连接数据库 Statement stmt=con.createStatement();String sql; if(checkclass!="all") //class不为all的时候sql ="select sno,sname,sclass,sid,ssex,ssty,sut,sbir,szz,ssy,dept,spy,tel from student where sclass='"+checkclass+"'";else sql="select * from student";//class为all的时候//String sql ="select * from student " ; ResultSet rs = con.createStatement().executeQuery(sql) ; // 获取总列数 int CountColumnNum = rs.getMetaData().getColumnCount() ; int i =1 ; // 创建Excel文档 HSSFWorkbook wb = new HSSFWorkbook() ; // sheet 对应一个工作页 HSSFSheet sheet = wb.createSheet("student表中的数据") ; HSSFRow firstrow = sheet.createRow(0); //下标为0的行开始 HSSFCell[] firstcell = new HSSFCell[CountColumnNum]; String[] names ={"学号","姓名","班级","身份证号","性别","学生类别","民族","出生日期","政治面貌","生源地","专业","培养方式","手机号"}; for(int j=0;j<CountColumnNum; j++){ firstcell[j] = firstrow.createCell((short)j); firstcell[j].setCellValue(new HSSFRichTextString(names[j])); } while(rs.next()) { // 创建电子表格的一行 HSSFRow row = sheet.createRow(i) ; // 下标为1的行开始 for(int p=0;p<CountColumnNum;p++) { // 在一行内循环 HSSFCell cell = row.createCell((short) p) ; // 设置表格的编码集,使支持中文 //// 先判断数据库中的数据类型 // 将结果集里的值放入电子表格中 cell.setCellValue(new HSSFRichTextString(rs.getString(p+1))) ; } i++ ; } %><% //获得系统时间,用于命名java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss");java.util.Date currentTime = new java.util.Date();//得到当前系统时间String str_date1 = formatter.format(currentTime); //将日期时间格式化 //out.println(str_date1);%> <% // 创建文件输出流,准备输出电子表格 OutputStream outp = new FileOutputStream("D:\\"+checkclass+"学生信息导出"+str_date1+".xls") ; wb.write(outp) ; outp.close() ; out.println("<script language='javaScript'>alert('"+checkclass+"学生信息导出成功');</script>"); response.setHeader("refresh","1;url=excel_choose.jsp"); rs.close() ; con.close() ; %>
------解决方案--------------------
checkclass!="all"
字符串不是你这样比较的。用equals
你这样当然全是true了,只有执行前面那条语句了。
但当为all的时候,你前面那条语句的checkclass为空字符串,所以在数据库里一条都没找到。