用jxl导出资料创建多个sheet(克服大数据量的导出)

用过jxl的一看就明白了

<%@page import="jxl.write.WritableFont,jxl.write.WritableCellFormat,java.sql.ResultSetMetaData,java.io.*,jxl.write.Label,java.net.*,jxl.write.WritableCell,jxl.write.WritableWorkbook,
	java.util.*,com.running.crm.model.*,jxl.Workbook,jxl.write.WritableSheet"
	contentType="application/x-msdownload" pageEncoding="utf-8"%>
	<%
	OutputStream os = response.getOutputStream();
	WritableWorkbook wwb = Workbook.createWorkbook(os);
	Label label;
	response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode("客户资料", "utf-8") + ".xls");
	List customers=(List<Customer>)request.getAttribute("billResultSet");
	//String deptName=(String)request.getAttribute("deptName");
	int length=customers.size();//查询结果记录数
	int sheetSize=20000;
	int sheetNum=1;
	if(length%sheetSize>0){
	   sheetNum=length/sheetSize+1;
	}else{
	   sheetNum=length/sheetSize;
	}
	for(int kk=0;kk<sheetNum;kk++){
        WritableSheet ws=wwb.createSheet(("查询结果"+kk),kk);	
          //设定第一行的行高
         ws.setRowView(0,320);
         //将第一列的宽度设为20 
         
         ws.setColumnView(0,15);
         ws.setColumnView(1,15);
         ws.setColumnView(2,20);
         ws.setColumnView(3,20);
         ws.setColumnView(4,20);
         ws.setColumnView(5,20);
         ws.setColumnView(6,20);
         ws.setColumnView(7,20);
        
             
		String ss[] = {"姓名","性别","手机号码","证件类型","证件号码","公司","家庭住址","爱好" };
	  for (int i = 0; i < 8; i++) {
		 WritableFont arial12pt = new WritableFont(WritableFont.ARIAL,11, WritableFont.BOLD);
		 WritableCellFormat arial12format = new WritableCellFormat(arial12pt);
		 arial12format.setWrap(false);
		 label = new Label(i, 0, ss[i], arial12format);
		 ws.addCell(label);
	    }
	  for(int i = kk*sheetSize; i< (kk+1)*sheetSize ; i++ ){
         if(i<length ){
                   Customer customer = (Customer) customers.get(i);
           for (int j = 0; j < 8; j++) {
            switch(j){
                case 0:label=new  Label(j, i+1-(kk*sheetSize), customer.getCustomerName());break;
                case 1:label=new  Label(j,i+1-(kk*sheetSize), customer.getCustomerSex());break;
                case 2:label=new  Label(j, i+1-(kk*sheetSize), customer.getPhoneNo());break;
              //  case 3:lable=new  Label(j, i, customer.getCategoryName());break;
                case 3:label=new  Label(j, i+1-(kk*sheetSize), customer.getCardType());break;
                case 4:label=new  Label(j, i+1-(kk*sheetSize), customer.getCardId());break;
                case 5:label=new  Label(j, i+1-(kk*sheetSize), customer.getCustomerCorp());break;
                case 6:label=new  Label(j, i+1-(kk*sheetSize), customer.getHomeAddr());break;
                case 7:label=new  Label(j, i+1-(kk*sheetSize), customer.getCustomerJoy());break;
                default:label=new Label(j,i+1-(kk*sheetSize),"");
                
            }
           
			ws.addCell(label);
		}
           }else{
                break;
            }
	    }
	 }
	  wwb.write();
	  wwb.close();
	  os.close();
      out.clear();
      out = pageContext.pushBody();
	  return;
%>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值