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

jsp代码

 <%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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>
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/lib/easyui/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/lib/easyui/themes/icon.css" />
<link rel="stylesheet" type="text/css"
href="${pageContext.request.contextPath}/lib/easyui/demo/demo.css" />
<script type="text/javascript"
src="${pageContext.request.contextPath}/lib/easyui/jquery.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/lib/easyui/jquery.easyui.min.js"></script>
<style>
html,body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
} .easyui-datagrid {
position: absolute;
visibility: hidden;
}
</style> </head>
<body>
<table id="dg" class="easyui-datagrid"
style="width: 100%; height: auto"
data-options="
iconCls: 'icon-edit',
singleSelect: true,
toolbar: '#tb',
rownumbers:true,
fit:true,
pagination:true,
pageSize:10">
<thead>
<tr>
<th data-options="field:'ID',width:100,hidden:'true'">ID</th>
<th data-options="field:'userName',width:100,halign: 'center'">用户名</th>
<th data-options="field:'userCode',width:80,halign: 'center'">登陆名</th>
<th
data-options="field:'userRole',width:80,align:'right',halign: 'center'">角色</th>
</tr>
</thead>
</table> <div id="tb" style="padding: 5px; height: auto">
<div>
用户名: <input class="easyui-textbox" id="query-UserName"
style="width: 80px"> 登陆名: <input class="easyui-textbox"
id="query-UserCode" style="width: 80px"> 角色: <select
class="easyui-combobox" id="query-UserRole" name="state"
style="width: 100px;">
<option value="ALL">ALL</option>
<option value="管理员">管理员</option>
<option value="会员">会员</option>
<option value="收文员">收文员</option>
<option value="发文员">发文员</option>
</select> <a href="#" class="easyui-linkbutton" iconCls="icon-search"
onclick="query()">查询</a>
<a href="#" class="easyui-linkbutton" iconCls="icon-export"
onclick="userExport()">导出</a>
</div>
</div> <script type="text/javascript">
$(function() {
query();
var p = $('#dg').datagrid('getPager');
$(p).pagination({
beforePageText : '第',//页数文本框前显示的汉字
afterPageText : '页 共 {pages} 页',
displayMsg : '第{from}到{to}条,共{total}条',
onSelectPage : function() {
//问题在这里,已经选择过的页数,再次选择不会触发onSelectPage事件,怎么取消这个缓存???
query();
}
});
});
</script>
<script type="text/javascript">
function userExport() {
var userName = $('#query-UserName').textbox('getValue');
var userCode = $('#query-UserCode').textbox('getValue');
var userRole = $('#query-UserRole').combobox('getText');
window.location.href = "/gwsfw/user/userExport?userName="
+ userName + "&userCode=" + userCode + "&userRole="
+ userRole;
} function query() {
var options = $("#dg").datagrid("getPager").data("pagination").options;
var curr = options.pageNumber;
// alert(curr);
var size = options.pageSize;
var userName = $('#query-UserName').textbox('getValue');
var userCode = $('#query-UserCode').textbox('getValue');
var userRole = $('#query-UserRole').combobox('getText');
$.ajax({
type : "POST",
url : "/gwsfw/user/getList",
dataType : "json",
data : JSON.stringify({
pageNumber : curr,
pageSize : size,
userName : userName,
userCode : userCode,
userRole : userRole
}),
contentType : "application/json", success : function(data) { $('#dg').datagrid('loadData', data);
},
error : function(err) {
alert("error");
}
}); } </script>
</body>
</html>

Controller 代码

 @RequestMapping(value = "/userExport")
public void userExport(
HttpServletRequest request,
@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "userCode", required = false) String userCode,
@RequestParam(value = "userRole", required = false) String userRole,
HttpServletResponse response) throws Exception {
String strWhere = " where UserStatus=0 ";
if (!userName.equals(""))
strWhere += " and UserName='" + userName + "'";
if (!userRole.equals("ALL"))
strWhere += " and UserRole='" + userRole + "'";
if (!userCode.equals(""))
strWhere += " and UserCode='" + userCode + "'"; String[] titles = { "用户编号", "用户名", "登录名", "用户角色" };
HSSFWorkbook workbook = bll.createExcel(titles, strWhere); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 定义文件名格式 try {
// 定义excle名称 ISO-8859-1防止名称乱码
String msg = new String(
("用户信息_" + format.format(new Date()) + ".xls").getBytes(),
"ISO-8859-1");
// 以导出时间作为文件名
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename="
+ msg);
workbook.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}

bll 代码 createExcel

 public HSSFWorkbook createExcel(String[] titles, String strWhere, String... parameter) throws Exception {
try {
// 第一步,创建一个workbook,对应一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet hssfSheet = workbook.createSheet("sheet1");
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
HSSFRow hssfRow = hssfSheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
// 居中样式
hssfCellStyle.setAlignment(HorizontalAlignment.CENTER); HSSFCell hssfCell = null;
for (int i = 0; i < titles.length; i++) {
hssfCell = hssfRow.createCell(i);// 列索引从0开始
hssfCell.setCellValue(titles[i]);// 列名1
hssfCell.setCellStyle(hssfCellStyle);// 列居中显示
} // 第五步,写入实体数据 从数据库中获取List<User>
List<User> users = dao.queryUser(strWhere, parameter); if (users != null && !users.isEmpty()) {
for (int i = 0; i < users.size(); i++) {
hssfRow = hssfSheet.createRow(i + 1);
User user = users.get(i); // 第六步,创建单元格,并设置值
int userid = 0;
if (user.getID() != 0) {
userid = user.getID();
}
hssfRow.createCell(0).setCellValue(userid);
String username = "";
if (user.getUserName() != null) {
username = user.getUserName();
}
hssfRow.createCell(1).setCellValue(username);
String userCode = "";
if (user.getUserCode() != null) {
userCode = user.getUserCode();
}
hssfRow.createCell(2).setCellValue(userCode);
String userRole = "";
if (user.getUserRole() != null) {
userRole = user.getUserRole();
}
hssfRow.createCell(3).setCellValue(userRole);
}
}
return workbook; } catch (Exception e) {
e.printStackTrace();
throw new Exception("导出信息失败!");
} }

java springmvc poi 导出Excel,先简单记录,后期会详细描写的更多相关文章

  1. POI导出excel的简单demo

    目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...

  2. Java之POI导出Excel(一):单sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码  <!-- ...

  3. java解决poi导出excel文字水印,导出excel不可操作问题

    首先需求是用户提出导出excel数据需使用水印备注其用途: 其实就是在导出excel的同时带有自定义文字水印的导出. 那么我们首先想到的肯定是以一个什么样的思路去解决该问题,首先查找poi导出exce ...

  4. java使用poi导出excel

    继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...

  5. Java使用POI导出excel(下)——实例与小技巧

    [更新]:thinkgem的导出工具类: /** * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesit ...

  6. Java之POI导出Excel(二):多个sheet

    相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet 但是在我们日常的工作中,需 ...

  7. Java使用POI导出excel(上)——基本操作

    相关的介绍参考自:http://zc985552943.iteye.com/blog/1491546 一.概述 1.概念 受上文博文博主的启发,有必要先对excel的各个概念先做了解! //上述基本都 ...

  8. Java之Poi导出Excel文档

    一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...

  9. java用POI导出Excel

    架构SSM + Maven 一.添加依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactI ...

随机推荐

  1. Spark指标项监控

    监控配置 spark的监控主要分为Master.Worker.driver.executor监控.Master和Worker的监控在spark集群运行时即可监控,Driver和Excutor的监控需要 ...

  2. windows 安装使用 Memcached

    Windows无官方版本:下载地址http://static.runoob.com/download/memcached-win64-1.4.4-14.zip 安装: 1.解压下载的压缩包2.命令行模 ...

  3. Zookeeper(五)持久化快照

    Zookeeper(五)持久化快照 用途 快照文件是指定时间间隔对zookeeper服务器上的节点数据的序列化后备份到磁盘中,快照文件不一定是最新的 如果zk集群挂了,可能会用到它来复原 基本术语 D ...

  4. 六、smarty-缓存控制前的页面静态化原理

    页面静态化可以实现优化服务,对大流量访问网站非常至关重要 为什么页面静态化, 1.  不去执行数据库连接 2.  不去执行SQL语句 设置按时间更新, 1.  按时间更新,如果缓存文件设置1小时 如下 ...

  5. asp.net form submit 在Chrome里面看Form提交

    Chrome中查看 request  form data 在Fiddler中查看

  6. centos7 apache php git pull

    mkdir /usr/share/httpd/.ssh cp /root/.ssh/* /usr/share/httpd/.ssh chown -R apache:apache /usr/share/ ...

  7. Docker-----版本选择

    版本演变 17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, Docker Engine 的版本号范围: 0.1.0 ~ 1.13.1 17.03 版本 ...

  8. shell初级-----结构化命令

    if-then语句 bash shell的if语句会执行if后面的那个命令,如果该命令的退出码状态为0会执行then部分的命令,如果是其他值不会执行. 格式如下: if command then co ...

  9. TCP keepalive的详解(解惑)

    TCP是面向连接的,一般情况,两端的应用程序可以通过发送和接收数据得知对端的存活. 当两端的应用程序都没有数据发送和接收时,如何判断连接是否正常呢? 这就是SO_KEEPALIVE的作用. 1. SO ...

  10. 使用ViewPager实现广告自动轮播的效果

    package com.loaderman.viewpgerlunbodemo; import android.os.Bundle; import android.os.Handler; import ...