OutExcel2007 v1.0.4 正式版发布 附源代码

 

POI 最新版本已经支持大数据量导出,而不会内存溢出了.  但是我测试了下.效率没有我这个高.而且CPU消耗比较高.

 

曾经放出过源码. 但是很多人,....哎不说了.这次关闭源码.

 

 

这个只是个正式版本...目前该版本.支持多sheet100W数据量的数据导出.

 

解决了Excel2007的格式导出大数据量内存溢出问题 ,

 

本工具,绝对不会出现内存溢出的问题,即使每个sheet100W数据量.导出100个这样sheet ,(100W*100 的数据量)

 

已近解决了多处BUG.再我公司大数据量系统导出里面已近运行了3个月了.没出现问题

 

下载的压缩包里面已近包含了下面的测试类了.

 

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.tgseam.excel.Sheet;
import com.tgseam.excel.WorkBook;
import com.tgseam.excel.impl.XlsxWorkBook;
import com.tgseam.excel.info.OutConstants;
import com.tgseam.excel.util.Cell;

public class WorkTest {

	public static void main(String[] args)  {
		new Thread(){
			
			@Override
			public void run(){
				new WorkTest().runs("temp1.xlsx");
			}
			
		}.start();
		
//		new Thread(){	
//			
//			@Override
//			public void run(){
//				new WorkTest().runs("temp2.xlsx");
//			}
//			
//		}.start();
	}
	
	public void runs(String name){
		long start = System.currentTimeMillis();
		
		try {
			
			create(name);//1W*2(sheet)=2W
			WorkBook wb = null;
			for(int i = 0 ; i < 1; i++){
				wb = append(name, wb); 
				System.out.println("i = "+i);
			}
			wb.write();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		long end = System.currentTimeMillis();
		System.out.println("End Create Xlsx Time: "+new SimpleDateFormat("mm:ss.SSS").format(new Date(end - start)));
	}
	
	public WorkBook append(String name, WorkBook wb) throws Exception{
		long startTime = System.currentTimeMillis();
		
		if(wb == null){
			wb = new XlsxWorkBook(new File("D:/Temp/" + name));
		}
		
		Sheet sht1 = wb.getSheet("第\"一\"制药");
		if(sht1 == null){
			sht1 = wb.createSheet("第\"一\"制药");
		}
		int start = sht1.getLastRowSum() +1;
		
		Cell sp2 = sht1.getCell();
		for(int i = start ; i < (start + 10000); i ++){
			
			sht1.setLastRowSum(i);
			sp2.insertRow(i);
	
			sp2.createCell(0, "" + i + "!");
			sp2.createCell(1, (double)232987+i);
			sp2.createCell(2, "" + i + "!");
			sp2.createCell(3, (double)232987+i);
			sp2.createCell(4, "12345---" + i + "!");
			sp2.createCell(5, (double)232987+i);
			sp2.createCell(6, "12345---" + i + "!");
			sp2.createCell(7, (double)232987+i);
			sp2.createCell(8, (double)232987+i);
			sp2.createCell(9, "12345---" + i + "!");
			sp2.createCell(10, (double)232987+i);
			sp2.createCell(11, (double)232987+i);
			sp2.createCell(12, "" + i + "!");
			sp2.createCell(13, (double)232987+i);
			sp2.createCell(14, "12345---" + i + "!");
			sp2.createCell(15, (double)232987+i);
			sp2.createCell(16, "12345---" + i + "!");
			sp2.createCell(17, (double)232987+i);
			sp2.createCell(18, (double)232987+i);
			sp2.createCell(19, "12345---" + i + "!");
			sp2.createCell(20, (double)232987+i);
			sp2.endRow();
		}
		
		/*Sheet sht2 = wb.getSheet("中美史克");
		if(sht2 == null){
			sht2 = wb.createSheet("中美史克"); 
		}
		SpreadSheet sp = sht2.getSpreadSheet();
		int start2 = sht2.getLastRowSum();
		for(int i = start2 ; i < (start2 + 10000); i ++){
			sp.insertRow(i);
	
			sp.createCell(0, "很好" + i + "!");
			sp.createCell(1, (double)232987+i);
			sp.createCell(2, "车市重么" + i + "!");
			sp.createCell(3, (double)232987+i);
			sp.createCell(4, "12345---" + i + "!");
			sp.createCell(5, (double)232987+i);
			sp.createCell(6, "12345---" + i + "!");
			sp.createCell(7, (double)232987+i);
	
			sp.endRow();
		}*/
		
		System.out.println("Append or Create Sheet Time: "+ new SimpleDateFormat("mm:ss.SSS").format(new Date(System.currentTimeMillis() - startTime)));
//		wb.write();
		return wb;
	}
	
	public void create(String name) throws Exception{
		long start = System.currentTimeMillis();
		
		Calendar calendar = Calendar.getInstance();
		WorkBook wb = new XlsxWorkBook();
		
		Sheet st1 = wb.createSheet("第\"一\"制药"+name);
		
		Cell sp = st1.getCell();

		//insert head;
		sp.insertRow(0);
		sp.createCell(0, "心魔", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(1, "'擦汗魔", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(2, "眼角膜", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(3, "行李魔", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(4, "豆豆魔", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(5, "OUTPUT", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(6, "hand", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(7, "novd", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.createCell(8, "可可魔", OutConstants.STYLE_FGCOLOR_GRAY);
		sp.endRow();
		
		for(int i = 1 ; i < 10000; i ++){
			sp.insertRow(i);
			sp.createCell(0, "年后" + i + "!");
			sp.createCell(1, (double)23.2987);
			sp.createCell(2, 0);
			sp.createCell(3, (double)2329.87);
			sp.createCell(4, (double) -2329.87154514);
			sp.createCell(5, (long) 232987+i);
			sp.createCell(6, (long) -232987+i);
			sp.createCell(7, "0001");
			sp.createCell(8, calendar, OutConstants.STYLE_DATE);
			sp.createCell(9, "12345---" + i + "!");
			sp.createCell(10, (double)232987+i);
			sp.createCell(11, (double)232987+i);
			sp.createCell(12, "" + i + "!");
			sp.createCell(13, (double)232987+i);
			sp.createCell(14, "12345---" + i + "!");
			sp.createCell(15, (double)232987+i);
			sp.createCell(16, "12345---" + i + "!");
			sp.createCell(17, (double)232987+i);
			sp.createCell(18, (double)232987+i);
			sp.createCell(19, "12345---" + i + "!");
			sp.createCell(20, (double)232987+i);
			sp.endRow();
		}
		
		/*Sheet st2 = wb.createSheet("中美史克");
		SpreadSheet sp2 = st2.getSpreadSheet();
		for(int i = 1 ; i < 10000; i ++){
			sp2.insertRow(i);
	
			sp2.createCell(0, "你好" + i + "!");
			sp2.createCell(1, (double)232987+i);
			sp2.createCell(2, "你们号码.." + i + "!");
			sp2.createCell(3, (double)232987+i);
			sp2.createCell(4, "12345---" + i + "!");
			sp2.createCell(5, (double)232987+i);
			sp2.createCell(6, "12345---" + i + "!");
			sp2.createCell(7, (double)232987+i);
	
			sp2.endRow();
		}*/
		long end = System.currentTimeMillis();
		System.out.println("Create Sheet Time: "+ new SimpleDateFormat("mm:ss.SSS").format(new Date(end - start)));
		OutputStream os = new FileOutputStream(new File("D:/Temp/"+name));
		wb.write(os);
	}
}

QQ : 277215237 有BUG联系我啊.亲们

你可能感兴趣的:(Excel,java导出excel,excel 大数据量导出)