1.将POI组件中的jar包放入项目中路径下的WEB-INF/lib目录中

2.在javabean中创建一个poi的java文件,中间出了创建getXXX(),setXXX()方法外,加入readRecord(int rsRow)方法,返回值是list集合(需要遍历);

3.必须创建一个HSSFSheet实例,使用POI组件中的createSheet("sheetname")创建工作表,根据显示内容大小创建指定大小的单元格。

4.最后创建一JSP页面在看到合同的同时还能打印下载到Excel

首先将POI组件中的jar包放入项目中路径下的WEB-INF/lib目录中,然后便可以在JSP中使用POI组件了。

新建一数据库连接类Conn.java,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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集合,程序代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
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;程序代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<%@ 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页面;效果如下:

单击“导出报表”按钮,出现一个提示框

打开E盘,可以看到已经生成一个名为workbook.xls的文件,打开此文件,如下:

POI打印Excel报表的更多相关文章

  1. 使用POI生成Excel报表

    先把报表模板截图贴上来 下面是POI编写的报表生成类ExcelReport.java package com.jadyer.report; import java.io.FileNotFoundExc ...

  2. 10、借助POI实现Java生成并打印excel报表(1)

    10.1.了解 Apache POI 实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍.生成报表格式一般是EXCEL或者PDF .利用Apache  PO ...

  3. 11、借助POI实现Java生成并打印excel报表(2)

    11.POI打印功能 11.1.常用模块形式: HSSFPrintSetup printSetup = sheet.getPrintSetup(); printSetup.setVResolution ...

  4. poi导出Excel报表多表头双层表头、合并单元格

    效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @ ...

  5. ASP.NET打印EXCEl报表技术总结

    序言:我们在做企业项目或者一些管理系统的时候往往会用到导出到excel报表这项功能,下面我介绍的是用windows自带的excel来打印 首先必须引入:Interop.Excel.dll.Intero ...

  6. poi生成excel报表合并列

    功能任务 poi导出excel统计报表,有合并列的. 根据结构生成层级. 目标 1输入一个linkshashmap LinkedHashMap<String, Object> fieldM ...

  7. POI打印Excel

    一.POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 结构:HSSF - 提供读写Mic ...

  8. apache poi导出excel报表

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...

  9. java使用POI读取excel报表

    留此作为记录 package com.demo; import java.io.FileInputStream; import java.util.Iterator; import org.apach ...

随机推荐

  1. 张艾迪:全面开放“A"计划

    全面开放A计划.放飞梦想.放飞世界 AOOOiA.global将全面开启"A"计划.与世界分享We Share .与世界一同探索求知.全面开放"A"计划:拉近世 ...

  2. This Node源码分析

    看军哥博客有Rtos的源码分析,手痒耍宝把自己读的源码笔记分享出来.愿与众君互相讨论学习 namespace ros { namespace names { void init(const M_str ...

  3. Linux 常用命令集合

    1. 常用命令 ls  显示当前目录下的文件和文件夹: -ltr 按时间顺序显示文件和文件夹的详细信息,不带参数的时候 只显示文件夹和文件. vi  打开文件的内容 tar -cvf file.tar ...

  4. POJ 3126 Prime Path

    给定两个四位素数a  b,要求把a变换到b 变换的过程要保证  每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数  与  前一步得到的素数  只能有一个位不同,而且每步得到的素数都不能 ...

  5. 今天遇到了批量删除 redis 某个前缀的所有 key,发现只能是这么解决。

    redis-cli KEYS "php*" | xargs redis-cli DEL 利用 linux的 管道输出命令 xargs 根据返回结果逐条 删除.   上面这条命令 可 ...

  6. android两种基本联网方式与一种第三方开源项目的使用

    安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...

  7. 转: Rest简介及Spring实现

    一 Roy Fielding 2000年Rest被Roy Fielding提出来的,我对Roy Fielding的印象有以下几个. 一是RoyFielding做为Http协议的起草者,在Http协议发 ...

  8. Visual Basic 2012 借助DataGridView控件将Excel 2010数据导入到SQL server 2012

    (注:注释的颜色原本为绿色,在这里变为黑色,有点不便,但不会造成阅读影响.放入Visual Basic2012代码编辑器后会还原成绿色.) 摘  要:DataGridView控件作为数据传输的中介,只 ...

  9. Bootstrap学习笔记(一)

    一.什么是Bootstrap bootstrap是一款css框架,便于响应式设计. 二.怎样使用bootstarp 最常用的方法,在html结构中引入样式表bootstarp.min.css,以及jq ...

  10. MFC -- 遍历Dialog中的子元素(控件)

    CWnd *win = GetWindow(GW_CHILD);//获取第一个子控件 while(win) { win代表子控件,可以通过win来获取子控件的信息,如下述两行代码 //iCtrlId ...