java springmvc poi 导出Excel,先简单记录,后期会详细描写

POI jar包下载 : http://poi.apache.org/download.html

jsp代码

  1 <%@ page language="java" contentType="text/html; charset=utf-8"
  2     pageEncoding="utf-8"%>
  3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4 <html>
  5 <head>
  6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  7 <title>收发文系统</title>
  8 <link rel="stylesheet" type="text/css"
  9     href="${pageContext.request.contextPath}/lib/easyui/themes/default/easyui.css" />
 10 <link rel="stylesheet" type="text/css"
 11     href="${pageContext.request.contextPath}/lib/easyui/themes/icon.css" />
 12 <link rel="stylesheet" type="text/css"
 13     href="${pageContext.request.contextPath}/lib/easyui/demo/demo.css" />
 14 <script type="text/javascript"
 15     src="${pageContext.request.contextPath}/lib/easyui/jquery.min.js"></script>
 16 <script type="text/javascript"
 17     src="${pageContext.request.contextPath}/lib/easyui/jquery.easyui.min.js"></script>
 18 <style>
 19 html,body {
 20     width: 100%;
 21     height: 100%;
 22     margin: 0;
 23     padding: 0;
 24 }
 25 
 26 .easyui-datagrid {
 27     position: absolute;
 28     visibility: hidden;
 29 }
 30 </style>
 31 
 32 </head>
 33 <body>
 34     <table id="dg" class="easyui-datagrid"
 35         style="width: 100%; height: auto"
 36         data-options="
 37                 iconCls: 'icon-edit',
 38                 singleSelect: true,
 39                 toolbar: '#tb',
 40                 rownumbers:true,
 41                 fit:true,                
 42                 pagination:true,
 43                 pageSize:10">
 44         <thead>
 45             <tr>
 46                 <th data-options="field:'ID',width:100,hidden:'true'">ID</th>
 47                 <th data-options="field:'userName',width:100,halign: 'center'">用户名</th>
 48                 <th data-options="field:'userCode',width:80,halign: 'center'">登陆名</th>
 49                 <th
 50                     data-options="field:'userRole',width:80,align:'right',halign: 'center'">角色</th>
 51             </tr>
 52         </thead>
 53     </table>
 54 
 55 
 56     <div id="tb" style="padding: 5px; height: auto">
 57         <div>
 58             用户名: <input class="easyui-textbox" id="query-UserName"
 59                 style="width: 80px"> 登陆名: <input class="easyui-textbox"
 60                 id="query-UserCode" style="width: 80px"> 角色: <select
 61                 class="easyui-combobox" id="query-UserRole" name="state"
 62                 style="width: 100px;">
 63                 <option value="ALL">ALL</option>
 64                 <option value="管理员">管理员</option>
 65                 <option value="会员">会员</option>
 66                 <option value="收文员">收文员</option>
 67                 <option value="发文员">发文员</option>
 68             </select> <a href="#" class="easyui-linkbutton" iconCls="icon-search"
 69                 onclick="query()">查询</a> 
 70             <a href="#" class="easyui-linkbutton" iconCls="icon-export"
 71                 onclick="userExport()">导出</a>
 72         </div>
 73     </div>
 74 
 75 
 76     <script type="text/javascript">
 77         $(function() {            
 78             query();
 79             var p = $('#dg').datagrid('getPager');
 80             $(p).pagination({
 81                 beforePageText : '',//页数文本框前显示的汉字   
 82                 afterPageText : '页    共 {pages} 页',
 83                 displayMsg : '第{from}到{to}条,共{total}条',
 84                 onSelectPage : function() {
 85                     //问题在这里,已经选择过的页数,再次选择不会触发onSelectPage事件,怎么取消这个缓存???
 86                     query();
 87                 }
 88             });
 89         });
 90     </script>
 91     <script type="text/javascript">
 92         function userExport() {
 93             var userName = $('#query-UserName').textbox('getValue');
 94             var userCode = $('#query-UserCode').textbox('getValue');
 95             var userRole = $('#query-UserRole').combobox('getText');
 96             window.location.href = "/gwsfw/user/userExport?userName="
 97                     + userName + "&userCode=" + userCode + "&userRole="
 98                     + userRole;
 99         }
100         
101         function query() {
102             var options = $("#dg").datagrid("getPager").data("pagination").options;
103             var curr = options.pageNumber;
104             // alert(curr);
105             var size = options.pageSize;
106             var userName = $('#query-UserName').textbox('getValue');
107             var userCode = $('#query-UserCode').textbox('getValue');
108             var userRole = $('#query-UserRole').combobox('getText');
109             $.ajax({
110                 type : "POST",
111                 url : "/gwsfw/user/getList",
112                 dataType : "json",
113                 data : JSON.stringify({
114                     pageNumber : curr,
115                     pageSize : size,
116                     userName : userName,
117                     userCode : userCode,
118                     userRole : userRole
119                 }),
120                 contentType : "application/json",
121 
122                 success : function(data) {
123 
124                     $('#dg').datagrid('loadData', data);
125                 },
126                 error : function(err) {
127                     alert("error");
128                 }
129             });
130 
131         }
132     
133     </script>
134 </body>
135 </html>

 

Controller 代码

 1 @RequestMapping(value = "/userExport")
 2     public void userExport(
 3             HttpServletRequest request,
 4             @RequestParam(value = "userName", required = false) String userName,
 5             @RequestParam(value = "userCode", required = false) String userCode,
 6             @RequestParam(value = "userRole", required = false) String userRole,
 7             HttpServletResponse response) throws Exception {
 8         String strWhere = " where UserStatus=0 ";
 9         if (!userName.equals(""))
10             strWhere += " and UserName='" + userName + "'";
11         if (!userRole.equals("ALL"))
12             strWhere += " and UserRole='" + userRole + "'";
13         if (!userCode.equals(""))
14             strWhere += " and UserCode='" + userCode + "'";
15         
16         String[] titles = { "用户编号", "用户名", "登录名", "用户角色" };
17         HSSFWorkbook workbook = bll.createExcel(titles, strWhere);
18 
19         SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 定义文件名格式
20 
21         try {
22             // 定义excle名称 ISO-8859-1防止名称乱码
23             String msg = new String(
24                     ("用户信息_" + format.format(new Date()) + ".xls").getBytes(),
25                     "ISO-8859-1");
26             // 以导出时间作为文件名
27             response.setContentType("application/vnd.ms-excel");
28             response.addHeader("Content-Disposition", "attachment;filename="
29                     + msg);
30             workbook.write(response.getOutputStream());
31         } catch (IOException e) {
32             e.printStackTrace();
33         }
34     }

 

bll 代码 createExcel

 1 public HSSFWorkbook createExcel(String[] titles, String strWhere, String... parameter) throws Exception {
 2         try {
 3             // 第一步,创建一个workbook,对应一个Excel文件
 4             HSSFWorkbook workbook = new HSSFWorkbook();
 5             // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
 6             HSSFSheet hssfSheet = workbook.createSheet("sheet1");
 7             // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
 8             HSSFRow hssfRow = hssfSheet.createRow(0);
 9             // 第四步,创建单元格,并设置值表头 设置表头居中
10             HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
11             // 居中样式
12             hssfCellStyle.setAlignment(HorizontalAlignment.CENTER);
13 
14             HSSFCell hssfCell = null;
15             for (int i = 0; i < titles.length; i++) {
16                 hssfCell = hssfRow.createCell(i);// 列索引从0开始
17                 hssfCell.setCellValue(titles[i]);// 列名1
18                 hssfCell.setCellStyle(hssfCellStyle);// 列居中显示
19             }
20 
21             // 第五步,写入实体数据  从数据库中获取List<User>
22             List<User> users = dao.queryUser(strWhere, parameter);
23 
24             if (users != null && !users.isEmpty()) {
25                 for (int i = 0; i < users.size(); i++) {
26                     hssfRow = hssfSheet.createRow(i + 1);
27                     User user = users.get(i);
28 
29                     // 第六步,创建单元格,并设置值
30                     int userid = 0;
31                     if (user.getID() != 0) {
32                         userid = user.getID();
33                     }
34                     hssfRow.createCell(0).setCellValue(userid);
35                     String username = "";
36                     if (user.getUserName() != null) {
37                         username = user.getUserName();
38                     }
39                     hssfRow.createCell(1).setCellValue(username);
40                     String userCode = "";
41                     if (user.getUserCode() != null) {
42                         userCode = user.getUserCode();
43                     }
44                     hssfRow.createCell(2).setCellValue(userCode);
45                     String userRole = "";
46                     if (user.getUserRole() != null) {
47                         userRole = user.getUserRole();
48                     }
49                     hssfRow.createCell(3).setCellValue(userRole);
50                 }
51             }
52             return workbook;
53             
54         } catch (Exception e) {
55             e.printStackTrace();
56             throw new Exception("导出信息失败!");
57         }
58         
59     }

 

posted on 2018-04-25 15:17  Insein  阅读(377)  评论(0编辑  收藏  举报

导航