導航:首頁 > 網路數據 > 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大數據讀取相關的資料

熱點內容
mms文件夾存放什麼 瀏覽:234
文件處理word教案 瀏覽:686
cad2014授權文件 瀏覽:88
非計算機類專業學java校招 瀏覽:832
linux編譯安裝boost 瀏覽:555
linux中調用函數檢測u盤 瀏覽:512
文件名中最多有多少字元 瀏覽:601
蘋果電影完整版通百藝 瀏覽:383
復制文件原來的文件丟失怎麼找回 瀏覽:594
qq群可以傳多少多大的文件 瀏覽:433
mfrc522密碼 瀏覽:363
精品火龍版本傳奇 瀏覽:416
怎麼樣使文件夾無法打開 瀏覽:563
域名備案密碼修改 瀏覽:355
蘋果4怎麼去除鎖屏密碼 瀏覽:707
車床編程數字後面加點什麼意思 瀏覽:158
怎麼填報高中志願網站 瀏覽:974
win10系統自帶備份在哪個文件夾里 瀏覽:320
如何做識別顏色的app 瀏覽:836
五軸加工框架編程指令是什麼 瀏覽:861

友情鏈接