Excel文件溢出

jiziba 2004-08-25 09:32:51
在写Excel文件时,数据量一万多条时,出现java.lang.outofmemoryerr
有何良策?
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
majy 2004-08-26
  • 打赏
  • 举报
回复
多分几个页面也不行吗
jiziba 2004-08-26
  • 打赏
  • 举报
回复
不用excel.exe打开,那用什么打开呢?
boykent 2004-08-26
  • 打赏
  • 举报
回复
执行命令:
java -mx364M -ms196M TestExcel
你会发现你的程序效率和性能比以前强5倍左右!!
jiziba 2004-08-25
  • 打赏
  • 举报
回复
除了配置放弃,就没有办法了吗?
haode 2004-08-25
  • 打赏
  • 举报
回复
excel本身有最大列数,数据条数的限制。

而且工作簿中工作表个数,窗口个数这些都是和内存有关的,如果工作簿中建的工作表太多,内存也会溢出的。
jiziba 2004-08-25
  • 打赏
  • 举报
回复
package testthread;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.File;

public class TestExcel {
public TestExcel() {
}
public static void main(String[] args) {
TestExcel testExcel1 = new TestExcel();
try{
OutputStream fos = new FileOutputStream(new File(
"C:\\DzxhFile\\excel.xls"));
WritableWorkbook wwb = Workbook.createWorkbook(fos);
WritableSheet ws = wwb.createSheet("sheet0",0);
Label lb;
for(int i=0;i<40000;i++){
lb = new Label(0,i,"0-"+i);
ws.addCell(lb);
lb = new Label(1,i,"1-"+i);
ws.addCell(lb);
lb = new Label(2,i,"2-"+i);
ws.addCell(lb);
lb = new Label(3,i,"3-"+i);
ws.addCell(lb);
lb = new Label(4,i,"4-"+i);
ws.addCell(lb);
lb = new Label(5,i,"5-"+i);
ws.addCell(lb);
lb = new Label(6,i,"6-"+i);
ws.addCell(lb);
lb = new Label(7,i,"7-"+i);
ws.addCell(lb);
lb = new Label(8,i,"8-"+i);
ws.addCell(lb);
lb = new Label(9,i,"9-"+i);
ws.addCell(lb);
lb = new Label(10,i,"10-"+i);
ws.addCell(lb);

lb = new Label(11,i,"11-"+i);
ws.addCell(lb);
lb = new Label(12,i,"12-"+i);
ws.addCell(lb);
lb = new Label(13,i,"13-"+i);
ws.addCell(lb);
lb = new Label(14,i,"14-"+i);
ws.addCell(lb);
lb = new Label(15,i,"15-"+i);
ws.addCell(lb);

if(i%10000 == 0){
wwb.write();
fos.flush();
}
}

/*
wwb.write();
wwb.close();

// fos = new FileOutputStream(new File(
// "C:\\DzxhFile\\excel.xls"));
Workbook wb = Workbook.getWorkbook(new File(
"C:\\DzxhFile\\excel.xls"));
wwb = Workbook.createWorkbook(new File(
"C:\\DzxhFile\\excel.xls"),wb);
ws = wwb.getSheet(0);
lb = new Label(0,2,"0-2");
ws.addCell(lb);
lb = new Label(1,2,"1-2");
ws.addCell(lb);
lb = new Label(0,3,"0-3");
ws.addCell(lb);
lb = new Label(1,3,"1-3");
ws.addCell(lb);
*/
wwb.write();
wwb.close();
// fos.flush();
// fos.close();

}catch(Exception e){
}
}

}


以上数据为我模拟的,实际数据量和这相当,我已经是写10000条flush一次了,还是这样的,喔喔..
eureka0891 2004-08-25
  • 打赏
  • 举报
回复
你怎么写的?用流写,写一些flush一下
yp2211 2004-08-25
  • 打赏
  • 举报
回复
回复人: eureka0891() ( ) 信誉:98 2004-08-25 09:53:00 得分: 0


你怎么写的?用流写,写一些flush一下


----------------------------------------------

excel虽然有10000行和200列的限制(如果我没记错的话),但是只要不用excel.exe打开并修改保存的话,文件的数据是可以存住的,以前写过大的csv文件,没问题。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧