java导出Excel多个工作表(添加多个sheet)

如果数据量比较大(十万以上)建议导成多个excel文件,之后压缩成zip文件进行下载


//生成一个excel文件
		 WritableWorkbook wwb = null;    
	        try {    
	            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象    
	            wwb = Workbook.createWorkbook(new File(fileName));
	        } catch (IOException e) {    
	        	   log.error(e);
	        }    
		long totle = service.getTotle(searchParameters);//业务逻辑方法,获取总数,便于在excel分多个工作表
		//按65536条数据分页
		float res=Float.parseFloat(String.valueOf(totle));
		float mus=65536;
		float avg=res/mus;
		Map cols = (Map) request.getSession().getAttribute("columnsMap"); //业务逻辑方法
		for (int i = 0; i < avg+1; i++) {
			searchParameters.setEvent_id(String.valueOf(i*mus)); //分页查询条件
			searchParameters.setTotalLimit(String.valueOf((i+1)*mus));//分页查询条件
			List result = service.getEvents(searchParameters); //分页查询方法
			
			  if(wwb!=null){    
		            //创建一个可写入的工作表    
		            //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置    
		            WritableSheet ws = wwb.createSheet("列表"+(i+1), i);  
		            String colss = ((String) cols.get("cols")).substring("selected"
		    				.length() + 1);
		    		String[] columns = colss.split(","); //业务逻辑方法(添加标题)
		    		String[] colNames = ((String) cols.get("colNames")).split(",");
		            for (int j = 0; j < columns.length; j++) {
		            	jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); 
		            	jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc); 
		            	wcfFC.setBackground(Colour.GRAY_25);
		            	Label label = new Label(j, 0,colNames[j],wcfFC);
		            	ws.setColumnView(j, 20); //设置列宽
		            	ws.addCell(label);  //添加标题
					}
		            String str="";
		            //下面开始添加单元格    
		            for(int m=0;m

直接代码:

你可能感兴趣的:(JAVA,SE)