java - Write large text file data into excel -


i reading text file separated delimiters.

example of text file content

avc def efg jksjd
1 2 3 5
3 4 6 0

line line , holding in memory using hashmap having line numbers key of integer type , each line of text file list object

consider, map store information this

integer list

1 [avc def efg jksjd]

i using apache poi write excel. when writing excel using apache poi, following approach, here code snippet

hssfworkbook workbook = new hssfworkbook(); hssfsheet sheet = workbook.createsheet("sample sheet"); map<integer, list<object>> exceldataholder = new linkedhashmap<integer, list<object>>(); int rownum = 0; (integer key : keyset) {             row row = sheet.createrow(rownum++);             list<object> objlist = excelholder.get(key);//excelholder map             int cellnum = 0;             (object obj : objlist) {                 cell cell = row.createcell(cellnum++);                     cell.setcellvalue((date) obj);             } } 

this works quite if number of lines/records written excel less. imagine, if records in billion number or if text file has more lines assume in 100 000. think, approach fails, because createrow , createcell creates more 100 000 objects in heap. whatever java excel api, think writing it(excel) based on same approach i.e.., iteration of collection shown above. did examples aspose well, result aspose have same problem guess.

  • does createrow , createcell create new objects each time called?
  • if yes, alternative?. how write large data excel better performance?

a recent version of apache-poi has sxssf. shameless copy website

sxssf (package: org.apache.poi.xssf.streaming) api-compatible streaming extension of xssf used when large spreadsheets have produced, , heap space limited. sxssf achieves low memory footprint limiting access rows within sliding window, while xssf gives access rows in document. older rows no longer in window become inaccessible, written disk.

i had used creating spreadsheet 1.5 million rows.


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -