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联系我啊.亲们
分享到:
相关推荐
JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-1.0.4JavaEE源代码 commons-logging-...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步...
《R3DS ZWrap v1.0.4 Win——游戏建模中的拓补神器》 在数字艺术领域,特别是游戏建模中,优秀的工具能够极大地提升工作效率和模型质量。R3DS ZWrap v1.0.4 Win就是这样一款备受赞誉的软件,它是一款专为Zbrush用户...
【魔方报价系统V1.0.4全开源解密版】是一款专为IT行业设计的报价管理系统,它提供了一套完整的解决方案,帮助企业和个人快速、准确地进行产品和服务的报价。这款系统的开源特性使得用户可以深入理解其内部运作机制,...
jypro-v1.0.4-9-2023062806471694_pxza37.apk
DNS Jumper V1.0.4 是一个专为用户快速切换DNS服务器而设计的实用工具,尤其适合那些希望优化网络连接速度或增强网络安全性的用户。该软件提供了简体中文界面,便于中国用户操作,同时也支持多国语言,适应全球用户...
《iOS设备越狱详解——以p0sixspwn-v1.0.4工具为例》 在数字设备的世界里,iOS设备以其独特的封闭性著称,而“越狱”这一概念,便是为了打破这种封闭,赋予用户更多的自由度。本文将深入探讨越狱的基本概念,并以...
GLZip是一款专为Gameloft游戏设计的数据包解压工具,版本号为1.0.4。这个工具的核心功能在于帮助玩家处理和解压缩Gameloft游戏中的大型数据包,以便于游戏的顺利运行和安装。在理解GLZip的具体工作原理和应用之前,...
版本更新:V1.0.4 1. 重要更新、串口接收改为定时器、而不是线程,之前用线程处理串口消息导致各种异常,该版本比较稳定。 版本更新:V1.0.3 1. 支持以16进制发送数据,必须为0123456789abcdefABCDEF的2倍的字符,...
【标题】"购物-花粉团手机版 v1.0.4 安卓版.zip" 提供的是一个针对安卓平台的移动应用,名为“花粉团手机版”,版本号为1.0.4。这个应用程序主要专注于购物领域,可能是团购、优惠券或者集体采购等功能的集合,旨在...
bymall多用户开源商城系统 v1.0.4.zip
KnowledgeRoot 是一个采用 PHP 开发的知识库系统,...使用 FCKEditor 进行内容编辑。 KnowledgeRoot v1.0.3 升级了 dojotoolkit 和 Zend Framework 版本,修复了密码相关的一些问题,另外就是引入的简体中文的支持。
智能会务管理V1.0.4开源版功能模块
WebSocket压力并发测试工具,如标题所示的"WebSocket压力并发测试v1.0.4",主要用于模拟大量并发的WebSocket连接,以检测服务器处理这些连接的能力。这样的工具通常会提供以下功能: 1. **连接数控制**:设置并发...
Wxdown是一个用于保存公众号文章到本地离线查看的软件,支持将 HTML 文章保存至本地,并提供 HTML 转 PDF 的功能。此外,软件还支持图片素材管理,可在 Windows、Mac 和 Linux 系统上运行,使用 Go 语言开发,具备轻...
fcontex是开源的PHP博客系统,拥有漂亮的Web 2.0风格的后台界面和完全Ajax化的流畅操作体验,可用于快速构建中小型企业网站和个人博客(Blog)。...fcontex v1.0.4修正了安装向导问题,正在使用1.0.3的用户可以不必升
《安卓应用:浙大口腔医院 v1.0.4 安卓版——移动医疗的智能助手》 在当今数字化时代,移动医疗应用已经成为医疗服务的重要组成部分,尤其对于忙碌的现代人来说,通过手机就能轻松获取健康咨询、预约挂号、查看检查...