java - Create multiple excel files from a large data set and zip the excel files -


i have huge data set. im using apache poi create excel file data set. problem data set size exceeds 40 lakh rows in excel. split data set, make multiple excel files , zip , provide user downloadable zip file. im using restful services way.

retrievedata class:

public map<integer, object[]> exportxlsxdata(string dim, string client, string type) {        int count = 1;        map<integer, object[]> data = new treemap<integer, object[]>();       stringbuilder querybuilder = new stringbuilder();      try (connection con = datasource.getconnection()) {          string dimname = getname(dim, client);          data.put(count, new object[] {dimname, "job", "a", "b", "c", "d", "e", "f"});          statement stmt = con.createstatement();          if(type.equalsignorecase("u")){             system.out.println("exporting unmapped!!");              querybuilder.append("select * table client = "+client+" , "+dimname+" null");              stmt = con.createstatement();             resultset rs = stmt.executequery(querybuilder.tostring());              while(rs.next()){                 count += 1;                 data.put(count, new object[] {"", rs.getint("job"), rs.getint("a"),                          rs.getint("b"), rs.getint("c"), rs.getint("d"), rs.getint("e"), rs.getstring("f")});               }          }else if(type.equalsignorecase("m")){             system.out.println("exporting mapped !!");              querybuilder.append("select * table client = "+client+" , "+dimname+" not null");              stmt = con.createstatement();             resultset rs = stmt.executequery(querybuilder.tostring());              while(rs.next()){                 count += 1;                 data.put(count, new object[] {rs.getstring(dimname), rs.getint("job"), rs.getint("a"),                          rs.getint("b"), rs.getint("c"), rs.getint("d"), rs.getint("e"), rs.getstring("f")});              }         }        }catch (sqlexception e) {          system.err.println(e.geterrorcode() + e.getmessage());     }       return data;  } 

and in rest resource class need use data set split data , create excel files , zip them.

rest resource:

@get @path("/export") @produces("application/zip") public response exportxlsx(@queryparam("dim") final string dim,         @queryparam("client") final string client,         @queryparam("type") final string type,         @context uriinfo ui) {       xssfworkbook workbook = new xssfworkbook();         //create blank sheet       xssfsheet sheet = null;      map<integer, object[]> data = new treemap<integer, object[]>();     data = engineservice.exportxlsxdata(dim, client, type);      string filetype = null;     if(type.equalsignorecase("u")){         filetype = "unmapped ";         sheet = workbook.createsheet("unmapped");     }else if(type.equalsignorecase("m")){         filetype = "mapped ";         sheet = workbook.createsheet("mapped");     }      set<integer> keyset = data.keyset();       int rownum = 0;       (integer key : keyset)       {           row row = sheet.createrow(rownum++);           object [] objarr = data.get(key);           int cellnum = 0;           (object obj : objarr)           {              cell cell = row.createcell(cellnum++);              if(obj instanceof string)                   cell.setcellvalue((string)obj);               else if(obj instanceof integer)                   cell.setcellvalue((integer)obj);           }       }      responsebuilder response = response.ok((object) workbook);     response.header("content-disposition",             "attachment; filename=\"" + filetype + " - " + new date().tostring() + ".zip\"");     return response.build();  } 

here im creating single excel file. split file based on threshold, create multiple files , zip them together.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -