how to split Excel file using java? -
i have excel sheet 200000 rows.i want splits excel file each 50000 records. using apache poi api read , write excel file.is possible split file if number of row reaches on defined record size.please me solution problem.
code:
public string[][] getsheetdata(int sheetindex) { int noofcolumns = 0;xssfrow row = null; xssfcell cell = null; int i=0;int noofrows=0; int j=0; string[][] data=null; xssfsheet sheet=null; try { loadfile(); //load give excel if(validateindex(sheetindex)) { sheet = workbook.getsheetat(sheetindex); noofcolumns = getnumberofcolumns(sheetindex); noofrows =getnumberofrows(sheetindex)+1; data = new string[noofrows][noofcolumns]; iterator rowiter = sheet.rowiterator(); while(rowiter.hasnext()) { row = (xssfrow) rowiter.next(); iterator celliter = row.celliterator(); j=0; while(celliter.hasnext()) { cell = (xssfcell) celliter.next(); if(cell.getcelltype() == cell.cell_type_string) { data[i][j] = cell.getstringcellvalue(); } else if(cell.getcelltype() == cell.cell_type_numeric) { data[i][j] = double.tostring(cell.getnumericcellvalue()); } j++; } i++; } // outer while } else throw new invalidsheetindexexception("invalid sheet index."); } catch (exception ex) { logger.error(ex);} return data; } occur exception:
exception in thread "main" java.lang.outofmemoryerror: java heap space @ org.apache.xmlbeans.impl.store.locale$scrubbuffer.<init>(locale.java:1885) @ org.apache.xmlbeans.impl.store.locale.getscrubbuffer(locale.java:1904) @ org.apache.xmlbeans.impl.store.xobj.getvalueasstring(xobj.java:1205) @ org.apache.xmlbeans.impl.store.xobj.fetch_text(xobj.java:1796) @ org.apache.xmlbeans.impl.values.xmlobjectbase.get_wscanon_text(xmlobjectbase.java:1332) @ org.apache.xmlbeans.impl.values.xmlobjectbase.check_dated(xmlobjectbase.java:1269) @ org.apache.xmlbeans.impl.values.javalongholder.longvalue(javalongholder.java:53) @ org.apache.xmlbeans.impl.values.xmlobjectbase.getlongvalue(xmlobjectbase.java:1502) @ org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.ctrowimpl.getr(unknown source) @ org.apache.poi.xssf.usermodel.xssfrow.getrownum(xssfrow.java:321) @ org.apache.poi.xssf.usermodel.xssfsheet.initrows(xssfsheet.java:180) @ org.apache.poi.xssf.usermodel.xssfsheet.read(xssfsheet.java:147) @ org.apache.poi.xssf.usermodel.xssfsheet.ondocumentread(xssfsheet.java:134) @ org.apache.poi.xssf.usermodel.xssfworkbook.ondocumentread(xssfworkbook.java:235) @ org.apache.poi.poixmldocument.load(poixmldocument.java:190) @ org.apache.poi.xssf.usermodel.xssfworkbook.<init>(xssfworkbook.java:189) @ com.arosys.excelreading.readxlsx.loadfile(readxlsx.java:49) @ com.arosys.excelreading.readxlsx.getnumberofsheet(readxlsx.java:121) @ com.arosys.excelreading.readxlsx.main(readxlsx.java:324) java result: 1 thanks
if cannot read docuemnt poi table simple i'd suggest open excel, save csv file , separate file fragments. can done using shell script/batch file.
this recommendation valid if have 1 huge file , have split it. if implementing service should receive such excel files , separate other solution.
Comments
Post a Comment