`
还有也许
  • 浏览: 168510 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

用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;
%>

 

1
1
分享到:
评论
2 楼 还有也许 2010-09-29  
emlyn_1180 写道
excel2003中sheet的最大记录是65535  2007更大一些
另外不知道你所谓的大数据量到底有多大?有没有试过超过50W的记录?

我遇到的是excel2003的,大数据量我没有去测试他到底有多大,不过如果你后台能查出来,前台页面的这段导出应该都能写入吧。对于你说的2007能更大好像和我的程序不冲突吧,每个sheet显示多少条,自己设置,只要不超过excel自身所能承受的大小不就可以了。
1 楼 emlyn_1180 2010-09-28  
excel2003中sheet的最大记录是65535  2007更大一些
另外不知道你所谓的大数据量到底有多大?有没有试过超过50W的记录?

相关推荐

    jxl导出excel加水印.zip

    在Java编程环境中,我们经常需要处理数据的导入和导出,Excel作为一种常见的数据存储和展示格式,被广泛应用。`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库...

    jxl导出数据

    注意,如果你的数据量非常大,可能需要考虑分批处理或使用流式写入以避免内存溢出。 总的来说,JXL库提供了一个方便的方式来处理Excel文件,无论是在Java应用程序还是服务器端,都能有效地进行数据导入和导出。通过...

    jxl数据导入导出jxl数据导入导出jxl数据导入导出jxl数据导入导出

    - 如果数据量大,考虑分批写入或使用更高效的写入策略,以避免一次性加载大量数据导致内存压力。 通过以上解析,我们可以看到JXL库在处理数据导入导出时的灵活性和实用性,它简化了Java程序与Excel文件交互的过程...

    java jxl 导出

    在描述中提到的“支持多个sheet页导出”意味着JXL库允许开发者在一个Excel文件中创建多个工作表(Sheet),每个工作表可以独立存储和显示数据。这在处理大量数据或者需要分类展示信息时非常有用。你可以根据需要...

    使用jxl导出Excel表的好例子

    2. **创建Worksheet对象**:工作簿包含多个Sheet,即Excel中的工作表。我们可以使用`Workbook.createSheet()`方法创建新的Sheet。 ```java WritableSheet sheet = workbook.createSheet("Sheet1", 0); ``` 3. *...

    Android-Android使用jxl快速导出excel表

    此外,如果数据量较大,应考虑分批写入或使用流式处理,以优化性能。 在实际项目中,你可能会遇到一些问题,如文件权限、内存溢出或线程同步等。对于这些问题,要确保正确请求存储权限,使用内存管理策略(如流或...

    java使用JXL导入导出excel

    Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...

    jxl导出excel

    标题中的“jxl导出excel”指的是使用JExcelApi(简称jxl)库来生成和导出Microsoft Excel格式的文件。JExcelApi是一个开源Java库,允许开发者在Java应用程序中读取、写入和修改Excel文件。这个工具类在处理大量数据...

    导出Excel 支持大数据量导出

    对于大数据量导出,我们主要关注BIFF8格式,因为它对内存的需求相对较低,适合处理大量数据。 **1. 数据分块处理:** 由于一次性加载大量数据可能导致内存溢出,jxl提供了分块写入的功能。通过设置`...

    jxl导出excel总结

    《jxl导出Excel的深度解析与应用》 在信息化高度发展的今天,Excel作为数据处理和分析的重要工具,被广泛应用于各个领域。Java作为一种强大的编程语言,如何与Excel进行交互,成为了许多开发者关注的焦点。jxl库...

    J2EE使用Jxl实现导出Execl

    4. 写入数据:对于每个需要写入的行和列,可以使用`Sheet.createRow()`和`Row.createCell()`创建对应的Row和Cell对象,然后通过`Cell.setCellValue()`设置单元格的值。 5. 设置样式:Jxl提供了丰富的样式选项,如...

    jxl.jar,excel数据工具类导出jar

    例如,可以创建一个新的Workbook对象,然后在这个工作簿中添加Sheet对象,再在Sheet上填充数据。 2. **数据类型支持**:jxl.jar不仅支持基本的数据类型如字符串、数字、日期,还支持布尔值、公式、超链接等复杂数据...

    jtable 导出excel 超过65535 新建一个sheet代码

    - **多线程处理**:如果数据量非常大,可以考虑使用多线程技术来提高处理效率。 - **异常处理**:示例代码中只简单地打印了异常堆栈,实际应用中应该有更完善的异常处理机制。 综上所述,通过合理的设计和编码,...

    利用jxl实现数据库内容导出Excel

    jxl库是Java中一个广泛使用的库,它提供了读写Excel文件的功能。本篇文章将深入探讨如何利用jxl库实现数据库内容的导出。 首先,你需要在项目中引入jxl库。在提供的压缩包中,`jxl.jar`是jxl的核心库文件,你需要将...

    java 导出excel(单、多工作薄)

    如果你的数据量超过了这个限制,你将需要考虑使用多工作簿的策略,或者更换更强大的库,如Apache POI。 Apache POI是一个开源项目,它为Microsoft Office格式提供了广泛的API支持,包括Excel。POI允许我们创建、...

    用JXL导出EXCEL

    ### 使用JXL库导出Excel的关键知识点 #### JXL库简介 JXL(Java Excel API)是一个用于读取和写入Microsoft Excel文件的Java库。它支持多种版本的Excel文件,包括`.xls`格式。使用JXL库进行Excel操作非常方便,特别...

    java使用jxl进行Excel导入导出

    Java 使用 JXL 进行Excel导入导出是一个常见的任务,特别是在数据处理和分析场景中。JXL 是一个 Java 库,允许开发者方便地读取、写入和操作 Excel 文件(.xls 格式)。以下是对这个主题的详细阐述: 1. **JXL 概述...

    jxl 实现根据sql语句导出excel文件

    标题 "jxl 实现根据sql语句导出excel文件" 提到的是使用jxl库来创建Excel文件,并根据SQL查询结果填充数据的过程。jxl是一个Java库,它提供了读写Microsoft Excel文件的能力,这对于在Java应用程序中处理和生成报表...

    jxl导出excel.zip

    "jxl导出excel.zip"是一个包含工具类的压缩包,用于帮助开发者便捷地将数据导出为Excel格式,主要利用了JXL库。JXL是Java Excel API的一个简称,它是一个开源的Java库,支持读取、写入以及修改Microsoft Excel文件。...

    jxl 导出的小测试模板

    这个标题暗示了我们可能会有一个模板,该模板可能是用于批量导出数据到Excel表格中,或者用于测试jxl库的功能和性能。 【描述】"jxl 模板"进一步强调了模板的概念。在编程中,模板通常指的是预定义的结构或布局,...

Global site tag (gtag.js) - Google Analytics