『壹』 java poi Excel大數據量導入怎麼提高速度
記得有個屬性,
POI3.8的SXSSF包是XSSF的一個擴展版本,支持流處理,在生成大數據量的電子表內格且堆空間有容限時使用。SXSSF通過限制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行數據的加入會引起老一行的數據刷新到硬碟。
比如內存中限制行數為100,當行號到達101時,行號為0的記錄刷新到硬碟並從內存中刪除,當行號到達102時,行號為1的記錄刷新到硬碟,並從內存中刪除,以此類推。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。
『貳』 java怎麼讀取很大的excel(20w條數據),怎麼通過位元組流獲取到單元格的內容
使用java poi
package webservice;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExcelController {
@SuppressWarnings("deprecation")
public void excel() throws FileNotFoundException, IOException{
String filename = "d:\\excel.xls";
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
//按名引用excel工作表
// HSSFSheet sheet = workbook.getSheet("JSP");
//也可以用以下方式來獲取excel的工作表,採用工作表的索引值
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row ;
HSSFCell cell1;
int rows=sheet.getLastRowNum();
for(int icount=0;icount<rows;icount++){
row = sheet.getRow(icount);
int line=row.getPhysicalNumberOfCells();
for(int j=0;j<line;j++){
cell1= row.getCell(j);
System.out.println(cell1+"--"+icount+"---"+j);
}
}
//列印讀取值
// System.out.println(cell.getStringCellValue());
//新建一輸出流
FileOutputStream fout = new FileOutputStream(filename); //PS:filename 是你另存為的路徑,不處理直接寫入模版文件
//存檔
workbook.write(fout);
fout.flush();
//結束關閉
fout.close();
}
public HSSFCell getCell(HSSFRow row, int index) {
// 取得分發日期單元格
HSSFCell cell = row.getCell(index);
// 如果單元格不存在
if (cell == null) {
// 創建單元格
cell = row.createCell(index);
}
// 返回單元格
return cell;
}
public static void main(String[] args) {
ExcelController ec = new ExcelController();
try {
ec.excel();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
『叄』 JAVA如何實現導出大數量EXCEL報表 數據大概100W條
好像是你的excel文件問題,你另外新建一個,再寫點東西在裡面試下隨便給你一個我以前用過的importjava.io.*;importjava.text.SimpleDateFormat;importjava.util.*;importjava.sql.*;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importjxl.*;publicclassSimUpdate{privateStringfileName;publicSimUpdate(StringfileName){this.fileName=fileName;}staticMaptNames;static{tNames=newHashMap();}//下面是主要代碼privatevoipdateDb(){try{Connectionconn=DbPool.connectDB();if(conn!=null){Statementstmt=conn.createStatement();/**********************************************/jxl.Workbookrwb=null;try{//構建Workbook對象只讀Workbook對象//直接從本地文件創建Workbook//從輸入流創建WorkbookInputStreamis=newFileInputStream(fileName);rwb=Workbook.getWorkbook(is);//Sheet(術語:工作表)就是Excel表格左下角的Sheet ,Sheet ,Sheet 但在程序中//Sheet的下標是從 開始的//獲取第一張Sheet表Sheetrs=rwb.getSheet( );//獲取Sheet表中所包含的總列數intrsColumns=rs.getColumns();//獲取Sheet表中所包含的總行數intrsRows=rs.getRows();//獲取指這下單元格的對象引用StringsimNumber="",termSeqId="";//指定SIM卡號及序列號for(inti= ;i ){System.out.println("成功插入第"+i+"條數據");}}}//以下代碼為寫入新的EXCEL,這里不使用,所以注釋/*//利用已經創建的Excel工作薄創建新的可寫入的Excel工作薄jxl.write.WritableWorkbookwwb=Workbook.createWorkbook(newFile("D://Book .xls"),rwb);//讀取第一張工作表jxl.write.WritableSheetws=wwb.getSheet( );//獲取第一個單元格對象jxl.write.WritableCellwc=ws.getWritableCell( , );//決斷單元格的類型,做出相應的轉化if(wc.getType()==CellType.LABEL){Labell=(Label)wc;l.setString("Thevaluehasbeenmodified.");}//寫入Excel對象wwb.write();wwb.close();*/}catch(Exceptione){e.printStackTrace();}finally{//操作完成時,關閉對象,翻譯佔用的內存空間rwb.close();}/*********************************************/}}catch(Exceptione){e.printStackTrace();}}}
『肆』 請教一個java 操作excel大數據量的問題
POI3.8的SXSSF包是XSSF的一個擴展版本,支持流處理,在生成大數據量的電子表格且堆版空間有限時使用。SXSSF通過許可權制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行數據的加入會引起老一行的數據刷新到硬碟。
比如內存中限制行數為100,當行號到達101時,行號為0的記錄刷新到硬碟並從內存中刪除,當行號到達102時,行號為1的記錄刷新到硬碟,並從內存中刪除,以此類推。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。
『伍』 如何用java代碼生成一個大數據的excel文件
POI包解析 或者 只是xls的話 用 jxl 也行 poi 全支持 xls 和xlsx
然後寫入 保存 ok
HSSFSheet sheet= null;
(int sherrt= 0; sherrt <wr.getNumberOfSheets();sherrt++){
sheet = wr.getSheetAt(sherrt); // 獲得sheet工作簿HSSFSheet
for(int i = 0 ; i<=sheet.getLastRowNum(); i++){
HSSFRow row = sheet.getRow(i);//獲得行數
Iterator o = row.iterator(); //得到每行的值
int j= 0 ;
while(o.hasNext()){
if(!key){
kk = o.next().toString();
if(StrC.getSimilarityRatio(kk, Vle[j])>0.7){j++;}
}else{
GetVAR[j] = o.next().toString();
j++;
}
}
這個是得到 也可以寫入
『陸』 Java如何導入大數據量excel,現在導入單個excel有幾十萬的數據,會出現內
用一些好的框架工具 spring batch
『柒』 java excel導入上千條數據需要多久
java excel導入上千條數據需要3-5個線程。
支持流處理,在生成大數據量的電子表格且堆空間有限時使用。SXSSF通過限制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行數據的加入會引起老一行的數據刷新到硬碟。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。
java excel分布式計算:
這個研究領域,主要研究分布式系統(Distributed system)如何進行計算。分布式系統是一組計算機,透過網路相互連接傳遞消息與通信後並協調它們的行為而形成的系統。組件之間彼此進行交互以實現一個共同的目標。
把需要進行大量計算的工程數據分區成小塊,由多台計算機分別計算,再上傳運算結果後,將結果統一合並得出數據結論的科學。分布式系統的例子來自有所不同的面向服務的架構,大型多人線上游戲,對等網路應用。分布式計算是一種新的計算方式。
『捌』 java excel導入上千條數據需要多久
java excel導入上千條數據需要3-5個線程。
支持流處理,在生成大數據量的電子表格且堆空間有限時使用。SXSSF通過限制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行數據的加入會引起老一行的數據刷新到硬碟。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。
java excel分布式計算:
這個研究領域,主要研究分布式系統(Distributed system)如何進行計算。分布式系統是一組計算機,透過網路相互連接傳遞消息與通信後並協調它們的行為而形成的系統。組件之間彼此進行交互以實現一個共同的目標。
把需要進行大量計算的工程數據分區成小塊,由多台計算機分別計算,再上傳運算結果後,將結果統一合並得出數據結論的科學。分布式系統的例子來自有所不同的面向服務的架構,大型多人線上游戲,對等網路應用。分布式計算是一種新的計算方式。