导航:首页 > 网络数据 > poi大数据读取

poi大数据读取

发布时间:2021-03-31 19:30:59

A. java poi Excel大数据量导入怎么提高速度

记得有个属性,

POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表内格且堆空间有容限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。

B. poi读取excel2007(大数据),然后保存到数据库

导致内存溢出是因为太多了内存不够用,你可以先读一部分然后做个标记,先把读到的这部分数据写入到数据库里。然后再从标记处开始读一部分再写入,再读再写直到完。不要一次性全部读完。

C. 怎么使用java Poi解决导入excel表格大数据量时的内存溢出问

不要一次全部读入,分批读入

~
~
~
~

D. 求Java poi 大数据量导出(五万行数据) 例子

已回答抄.

http://..com/question/276982769.html

你要自己修改一下设置表头与addCell方法

E. poi怎么从excel读取数据

xcel有行和列,根据行列下表,可以锁定单元格cell.
其中,合并单元格需要特殊处理,下面的代码,就是遍历excel,读取其中的全部数据.

F. 求Java poi 大数据量导出(五万行数据) 例子

我给你个办法,是要导出excel吗?别使用poi,使用xml来描述excel即可,就像流文件一样,多少都不会流出,给你个思路,你自己扩展,希望你能看明白。

/**
* @author J.W
* 2011-06-08
*/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
try {
DataOutputStream rafs = new DataOutputStream(
new BufferedOutputStream(new FileOutputStream(new File(
"d://test.xml"))));
sb.append("<?xml version=\"1.0\"?>");
sb.append("\n");
sb.append("<?mso-application progid=\"Excel.Sheet\"?>");
sb.append("\n");
sb.append("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
sb.append("\n");
sb.append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
sb.append("\n");
sb.append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
sb.append("\n");
sb.append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
sb.append("\n");
sb.append(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
sb.append("\n");
sb.append(" <Styles>\n");
sb.append(" <Style ss:ID=\"Default\" ss:Name=\"Normal\">\n");
sb.append(" <Alignment ss:Vertical=\"Center\"/>\n");
sb.append(" <Borders/>\n");
sb.append(" <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\"/>\n");
sb.append(" <Interior/>\n");
sb.append(" <NumberFormat/>\n");
sb.append(" <Protection/>\n");
sb.append(" </Style>\n");
sb.append(" </Styles>\n");
int sheetcount = 0;
int recordcount = 20;
int currentRecord = 0;
int total = 100;
int col = 20;
sb.append("<Worksheet ss:Name=\"Sheet0\">");
sb.append("\n");
sb.append("<Table ss:ExpandedColumnCount=\"" + col
+ "\" ss:ExpandedRowCount=\"" + total
+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
sb.append("\n");
for (int i = 0; i < total; i++) {
if ((currentRecord == recordcount
|| currentRecord > recordcount || currentRecord == 0)
&& i != 0) {// 一个sheet写满
currentRecord = 0;
rafs.write(sb.toString().getBytes());
sb.setLength(0);
sb.append("</Table>");
sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
sb.append("\n");
sb.append("<ProtectObjects>False</ProtectObjects>");
sb.append("\n");
sb.append("<ProtectScenarios>False</ProtectScenarios>");
sb.append("\n");
sb.append("</WorksheetOptions>");
sb.append("\n");
sb.append("</Worksheet>");
sb.append("<Worksheet ss:Name=\"Sheet" + i / recordcount
+ "\">");
sb.append("\n");
sb.append("<Table ss:ExpandedColumnCount=\"" + col
+ "\" ss:ExpandedRowCount=\"" + recordcount
+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");
sb.append("\n");
}
sb.append("<Row>");
for (int j = 0; j < col; j++) {
System.out.println(i);
sb.append("<Cell><Data ss:Type=\"String\">10000000000000000123</Data></Cell>");
sb.append("\n");
}
sb.append("</Row>");
if (i % 5000 == 0) {
rafs.write(sb.toString().getBytes());
rafs.flush();
sb.setLength(0);
}
sb.append("\n");
currentRecord++;
}
rafs.write(sb.toString().getBytes());
sb.setLength(0);
sb.append("</Table>");
sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
sb.append("\n");
sb.append("<ProtectObjects>False</ProtectObjects>");
sb.append("\n");
sb.append("<ProtectScenarios>False</ProtectScenarios>");
sb.append("\n");
sb.append("</WorksheetOptions>");
sb.append("\n");
sb.append("</Worksheet>");
sb.append("</Workbook>");
sb.append("\n");
rafs.write(sb.toString().getBytes());
rafs.flush();
rafs.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

可以直接执行,只是给你个思路。

G. java利用poi读大数据量xlsx除了用xml方式读取外,还有其他方法吗

poi是把excel当做【文来档】来处理源的,自然只有XSSFWorkbook类来操作它,也就是你说的xml方式。在poi的眼里,excel文档里的并不是【数据】而是【表格】。
你如果想要把excel当做【数据源】来处理,应该用odbc的方式,将你需要的excel文件变成一个odbc数据源,然后用ResultSet set = smt.executeQuery("select * from [sheet1$]");来读取数据,效率跟access表现相当(毕竟excel有数据量上限,实际表现大多数时候都比access还要快)

H. 关于Poi 大数据量Excel 导出时 文件过大的问题 怎么解决

建议不要导出excel,当前excel中已经有支持cvs文件。
解释:cvs文件的显示方式和版xls的显示方式一样,并权且此显示方式的执行效率要高于xls文件的额,因为cvs文件存储的是数据直接直接用英文逗号分隔,xls是存储的cell。所以在大量数据的情况下,都是导出为cvs文件。
备注:如果数据过多的话,建议可以分多次查询导出,不要一次性导出,否则效率会很低。
-

I. java excel poi 大数据量50W 内存溢出

Workbook workbook = new SXSSFWorkbook(1000);
poi有个机制 每次往内存中写1000条数据,这个1000你可以改的 尽量别大于10000条数据,写完1000条数据后再内重新写,这样就不会内存溢容出了。

阅读全文

与poi大数据读取相关的资料

热点内容
文件路径有空格咋办 浏览:736
设置进程退出代码 浏览:917
pdf转bin文件 浏览:125
win8java环境配置文件 浏览:742
ddl文件怎么打开 浏览:13
nexus5x澳版无网络信号 浏览:795
linuxgrepc 浏览:810
发票数据备份是备份哪些东西 浏览:475
微信接收压缩文件一直转圈 浏览:633
mms文件夹存放什么 浏览:234
文件处理word教案 浏览:686
cad2014授权文件 浏览:88
非计算机类专业学java校招 浏览:832
linux编译安装boost 浏览:555
linux中调用函数检测u盘 浏览:512
文件名中最多有多少字符 浏览:601
苹果电影完整版通百艺 浏览:383
复制文件原来的文件丢失怎么找回 浏览:594
qq群可以传多少多大的文件 浏览:433
mfrc522密码 浏览:363

友情链接