导出excel有两种方式,第一种已经说过了,现在分享一下第二种,直接用输出流导出excel
用jsp页面做的,点击导出按钮跳到导出页面,导出页面代码:
<%@page import="org.smile.database.classload.DBClass"%>
<%@ page language="java" import="java.util.*,java.net.*,
java.io.*,org.smile.util.*,com.rockmobile.ivr.dao.*,
jxl.write.*,jxl.Workbook,jxl.format.Alignment"
pageEncoding="gb2312"%>
<%
String phone = "";
String startime = "";
String endtime = "";
if(!request.getParameter("nr").equals("")){
phone = request.getParameter("nr");
}
if(!request.getParameter("startime").equals("")){
startime = request.getParameter("startime");
}
if(!request.getParameter("endtime").equals("")){
endtime = request.getParameter("endtime");
}
response.reset();//这句可有可无
response.setContentType("application/x-download");
//文件名
String filedisplay = "用户订购.xls";
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
//标题
String title = "手机号,订购时间";
String str[] = title.split(",");
//查询要导出的数据
OrderDao orderDao = new OrderDao();
List<DBClass> userlist = orderDao.exprt(phone,startime,endtime);
//获取输出流
OutputStream outp = response.getOutputStream();
//创建一个文件
WritableWorkbook workbook = Workbook.createWorkbook(outp);
// 创建一个工作表
WritableSheet sheet = workbook.createSheet("first sheet", 0);
//设置列宽
sheet.setColumnView(0, 15);
sheet.setColumnView(1, 25);
// 单元格对齐定义
WritableCellFormat wcf_title = new WritableCellFormat();
wcf_title.setAlignment(Alignment.CENTRE);
//添加标题
for(int i=0;i<str.length;i++){
Label id = new Label(i,0,str[i],wcf_title);
sheet.addCell(id);
}
//添加内容
for(int j=0;j<userlist.size();j++){
sheet.addCell(new Label(0,j+1,userlist.get(j).get("dcusermobile").toString(),wcf_title));
sheet.addCell(new Label(1,j+1,userlist.get(j).get("ddregtime").toString(),wcf_title));
}
// 将文件写入
workbook.write();
// 关闭工作薄
workbook.close();
outp.close();
//加这两句是为了不抛异常
out.clear();
out = pageContext.pushBody();
%>上面的根据自己项目的实际修改一下就行了,这样就可以直接在客户端弹出打开、保存提示进行操作了。