导出excel
要实现Excel首先是需要的夹包如下
poi-3.13-20150929.jar
导入夹包后就开始实现功能了,我用的是java,spring+springmvc+mybtis,前台使用的是jsp,js.easyui
========开始==========
==========前台的写法===========
<iframe name="download" id="download" style="display:none"></iframe> 定义一个内嵌页,给个id
//导出Excle
$("#exBtn").click(function(){
var list=$("#usertable").datagrid('getSelections');//easyui的方法,得到所有的勾选的chackboox,结果是个list,里面是一行行的数据,就相当于一个个的实体
if(list.length<1){
$.messager.show({
title:'提示',
msg:'请选择一条语句在导出'
});
}else{
//用内嵌页来接收
$("#download").attr('src',
"${pageContext.request.contextPath}/user/exportUser.do?list1="+JSON.stringify(list));//将list转化为json字符串
//或是下面这样写,这样不用定义内嵌页,直接写就可以
//window.open("${pageContext.request.contextPath}/user/exportUser.do?list1="+JSON.stringify(list));
}
})
==========后台的写法===========
@RequestMapping(value="/exportUser",produces = "application/json; charset=utf-8")
@ResponseBody
public String excleport(HttpServletRequest request,HttpServletResponse response) throws IOException{
//获取前台传来的数据,json格式的字符串
String lists=new String(request.getParameter("list1").getBytes("iso-8859-1"));
List<selectUser> list=null;
//System.out.println(lists);
String filename="人员信息";
if(StringUtils.isNoneBlank(lists)){//判断数据不为空
//将字符串转成json,在转成list
JSONArray jsonarray=JSONArray.fromObject(lists);
list=(List<selectUser>)jsonarray.toCollection(jsonarray, selectUser.class);
if(!list.isEmpty()){
}else{
return null;
}
}else{
return null;
}
// 创建一个Excel文档对象,相当于一个空白页
Workbook wb = new HSSFWorkbook();
//创建一个表,空白页上有了行和列的方格,相当于一个空的excle表格
Sheet sheet= wb.createSheet();
// 创建一行,参数0代表创建excle的第一行
Row titleRow = sheet.createRow(0);
//创建一行的每一列。并赋值
Cell cell=titleRow.createCell(0);//创建表头第一列
cell.setCellValue("用户姓名");//第一列表头起名字
titleRow.createCell(1).setCellValue("用户年龄");//创建表头第二列,并给第二列起名
titleRow.createCell(2).setCellValue("用户性别");
titleRow.createCell(3).setCellValue("用户电话");
titleRow.createCell(4).setCellValue("用户身份证");
titleRow.createCell(5).setCellValue("创建时间");
titleRow.createCell(6).setCellValue("用户邮箱");
//程序运行到这里就导出的话,效果就是一个excle表格有一行,这一行一共有7列,
//每一列的名字是上面指定的,但是没有数据,
//循环创建第2行、第3行....,并且给每一行创造列,并将list里的数据赋值给每一列
Row itemRow = null;
int i=0;
for(selectUser u:list){
itemRow=sheet.createRow(++i);
Cell cell1=itemRow.createCell(0);
cell1.setCellValue(u.getName());
itemRow.createCell(1).setCellValue(u.getAge());
itemRow.createCell(2).setCellValue(u.getSex());
itemRow.createCell(3).setCellValue(u.getPhonenumber());
itemRow.createCell(4).setCellValue(u.getIdcard());
itemRow.createCell(5).setCellValue(u.getCreatedate());
itemRow.createCell(6).setCellValue(u.getEmail());
}
response
.setHeader("Content-Disposition","attachment;filename="+new String(filename.getBytes("utf-8"), "iso8859-1")+".xls");
wb.write(response.getOutputStream());
return null;
}