首先将POI组件中的jar包放入项目中路径下的WEB-INF/lib目录中,而后即可以在JSP中使用POI组件了。javascript
新建一数据库链接类Conn.java,代码以下:html
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Conn { private final String dbDriver="com.mysql.jdbc.Driver" ; private final String url="jdbc:mysql://localhost:3306/employee"; private final String userName = "root"; private final String password = "ldm"; private Connection con=null; Statement s=null; public Conn(){ try{ Class.forName(dbDriver); con=DriverManager.getConnection(url,userName,password); }catch(Exception e){ System.out.println(e.getMessage()); } } public ResultSet executeQuery(String sql){ ResultSet rs=null; try{ Conn conn=new Conn(); s=con.createStatement(); rs=s.executeQuery(sql); }catch(Exception e){ e.printStackTrace(); } return rs; } public void close(){ try{ if(s!=null||con!=null){ s.close(); con.close(); } }catch(Exception e){ e.printStackTrace(); } } }
为了将从数据库中取出的数据放入List,建立JavaBean,命名为POITest.java;这个JavaBean除了setXXX()和getXXX()方法以外,还有一个根据用户须要显示的行数从数据库中取值ReadRecord(int rsRow)方法,它的返回值类型是List集合,程序代码以下:java
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.sql.ResultSet; import java.util.List; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class POITest { private int id; private String studentCode; private String name; private String sex; private String institute; private String department; private String classes; private String phone; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStudentCode() { return studentCode; } public void setStudentCode(String studentCode) { this.studentCode = studentCode; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getInstitute() { return institute; } public void setInstitute(String institute) { this.institute = institute; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getClasses() { return classes; } public void setClasses(String classes) { this.classes = classes; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public static List ReadRecord(int rsRow){ Conn conn=new Conn(); String sql="select * from student where id<='"+rsRow+"'"; ResultSet rs=conn.executeQuery(sql); List l=new ArrayList(); try{ while(rs.next()){ POITest p=new POITest(); p.setId(rs.getInt("id")); p.setStudentCode(rs.getString("studentCode")); p.setName(rs.getString("name")); p.setSex(rs.getString("sex")); p.setInstitute(rs.getString("institute")); p.setDepartment(rs.getString("department")); p.setClasses(rs.getString("classes")); p.setPhone(rs.getString("phone")); p.setAddress(rs.getString("address")); l.add(p); } conn.close(); }catch(Exception e){ e.printStackTrace(); } return l; } public static List ReadRecord(){ Conn conn=new Conn(); //链接数据库 String sql="select * from student"; //查询学生信息 ResultSet rs=conn.executeQuery(sql); //执行查询 List l=new ArrayList(); //定义List集合 try{ while(rs.next()){ POITest p=new POITest(); //实例化对象 p.setId(rs.getInt("id")); //为对象赋值 p.setStudentCode(rs.getString("studentCode")); p.setName(rs.getString("name")); p.setSex(rs.getString("sex")); p.setInstitute(rs.getString("institute")); p.setDepartment(rs.getString("department")); p.setClasses(rs.getString("classes")); p.setPhone(rs.getString("phone")); p.setAddress(rs.getString("address")); l.add(p); //将对象添加到List集合中 } conn.close(); //关闭数据库 }catch(Exception e){ e.printStackTrace(); } return l; //返回集合 } /* * 为了添加工做表,必须建立一个HSSFSheet实例,使用POI组件中的createSheet("sheetname")建立工做表,根据显示内容大小建立指定大小的单元格。 * 程序代码以下: * */ public void WriteCell(int rsRow){ HSSFWorkbook wb=new HSSFWorkbook(); HSSFSheet sheet=wb.createSheet("poiexample");//创建名为poiexample的报表 sheet.setColumnWidth(0, 2500); sheet.setColumnWidth(1, 6000); sheet.setColumnWidth(2, 3500); sheet.setColumnWidth(3, 9000); sheet.setColumnWidth(4, 9000); sheet.setColumnWidth(5, 8000); sheet.setColumnWidth(6, 8000); sheet.setColumnWidth(7, 9000); sheet.setColumnWidth(8, 9000); HSSFRow row=sheet.createRow(0); HSSFCell cell[]=new HSSFCell[9]; for(int i=0;i<9;i++){ //遍历每行的每列 cell[i]=row.createCell(i); } cell[0].setCellValue("id号"); //在单元格写入文字 cell[1].setCellValue("学号"); cell[2].setCellValue("姓名"); cell[3].setCellValue("性别"); cell[4].setCellValue("系别"); cell[5].setCellValue("专业"); cell[6].setCellValue("班级"); cell[7].setCellValue("电话"); cell[8].setCellValue("地址"); List l=POITest.ReadRecord(rsRow); if(l.size()>0 && l!=null){ for(int i=0;i<l.size();i++){ POITest p2=(POITest)l.get(i); HSSFRow datarow=sheet.createRow(i+1); HSSFCell data[]=new HSSFCell[9]; for(int j=0;j<9;j++){ data[j]=datarow.createCell(j); } data[0].setCellValue(p2.getId()); data[1].setCellValue(p2.getStudentCode()); data[2].setCellValue(p2.getName()); data[3].setCellValue(p2.getSex()); data[4].setCellValue(p2.getInstitute()); data[5].setCellValue(p2.getDepartment()); data[6].setCellValue(p2.getClasses()); data[7].setCellValue(p2.getPhone()); data[8].setCellValue(p2.getAddress()); } } File file=new File("e:\\workbook.xls"); try{ FileOutputStream fileOut=new FileOutputStream(file); wb.write(fileOut); fileOut.close(); }catch(IOException e){ e.printStackTrace(); } } }
最后建立一JSP页面,命名为PoiTest.jsp;程序代码以下:mysql
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.sql.*,com.wsy.POITest,java.io.*,java.io.FileOutputStream, org.apache.poi.hssf.usermodel.*,java.util.*,java.text.*"%> <jsp:useBean id="poi" scope="page" class="com.wsy.POITest"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>学生管理系统</title> </head> <script type="text/javascript" language="javascript"> function fn1(){ <%poi.WriteCell(9); %> alert("导出报表完毕!导出位置为e:\\workbook.xls!!!"); } </script> <body> <table border="1"> <tr><td>ID号</td><td>学号</td><td>姓名</td><td>性别</td><td>系别</td><td>专业</td><td>班级</td><td>电话</td><td>地址</td></tr> <% List l=poi.ReadRecord(); for(int i=0;i<l.size();i++){ POITest p2=(POITest)l.get(i); %><tr> <td><%=p2.getId() %><td> <td><%=p2.getStudentCode() %></td> <td><%=p2.getName()%></td> <td><%=p2.getSex() %></td> <td><%=p2.getInstitute() %></td> <td><%=p2.getDepartment() %></td> <td><%=p2.getClasses() %></td> <td><%=p2.getPhone() %></td> <td><%=p2.getAddress() %></td></tr> <% } %> </table><br/> <input type="button" value="导出报表" onClick='fn1()'/> </body> </html>
重启Tomcat服务器,在IE浏览器中运行JSP页面;效果以下:sql
单击“导出报表”按钮,出现一个提示框数据库
打开E盘,能够看到已经生成一个名为workbook.xls的文件,打开此文件,以下:apache