我正在尋找使用Java以編程方式寫入excel(.xls MS Excel 2003格式)文件。 excel輸出文件可能包含〜200,000行,我打算將其分割成多個頁面(每頁64k行,由於excel的限制)。使用java編寫巨大的excel文件的API
我嘗試過使用apache POI API,但它似乎是由於API對象模型而導致的內存豬。我不得不將單元格/工作表添加到內存中的工作簿對象,並且只有在添加完所有數據後,纔可以將工作簿寫入文件!這裏的Apache如何建議的樣品我寫使用他們的API Excel文件:
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");
//Create a row and put some cells in it
Row row = sheet.createRow((short)0);
// Create a cell and put a value in it.
Cell cell = row.createCell(0);
cell.setCellValue(1);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
顯然,寫作〜20K行(每行10-20一些列)給了我可怕的「的java.lang。 OutOfMemoryError:Java堆空間「。
我已經嘗試使用Xms和Xmx參數Xms512m和Xmx1024增加JVM初始堆和最大堆大小。仍然不能將超過150k行寫入文件。
我正在尋找一種方法將流寫入excel文件,而不是在將內容寫入磁盤之前在內存中構建整個文件,這將有望節省大量內存使用量。任何替代API或解決方案將不勝感激,但我只限於使用Java。謝謝! :)
你可以看看:http://stackoverflow.com/questions/6004379/java-write-excel-files-with-poi-event-model – ParagJ
只有1024m?嘗試4086(4演出)。有時我們會在工作中運行8個gms vms)。電子表格是這樣設計的,甚至可以同時在電子表格的一部分上工作? –