The issue mentioned by you needs thorough investigation. We are working on it. The issue has been logged into our Issue Tracking System with ID CELLSJAVA-20501. We will update you about our findings and the solution.
Thank you. Please let me know when you find something.
For exporting excel files from large datasets, we will support to save cells data to stream or file directly without building the complete data structures in memory. This way we would be able to get rid of OutOfMemory errors for most of the large Excel files. Hopefully we can support this feature before the end of this week.
Please try the new fix v220.127.116.11 (attached). In the new fix we have
provided a new Interface(LightCellsDataProvider) for saving large
dataset into the generated Excel file without building the complete data
structure in the memory. The attachment JAVA file is a sample
implementation of this interface based on data from database.
Great, thank you. I’m a little confused about how this operates, however - what does CellsHelper.gatherStyles do? There is nothing in the API docs about it.
Well, because style objects are global for a workbook, it needs to be analyzed before saving a Workbook. LightCellsDataProvider works during the save process, if you want to apply style on the cells/rows, all the style objects that will be used for the cells/rows should be gathered before starting the save process. That is what CellsHelper.gatherStyles() method does. You normally input an array of all style objects will be used, we gather them into the global pool and return the corresponding style index. Later you can use Cell.setStyle(int styleIndex)/Row.setStyle(int styleIndex) to apply style on Cell/Row in LightCellsDataProvider.startCell(Cell)/startRow(Row). Also it will be much efficient than setStyle(Style) methods.
The save process uses LightCellsDataProvider to get and save sheet data row by row in ascending order of row index. For one row, cell will be processed and saved one by one in ascending order of column index. At first nextRow() will be checked, if a valid row index is returned, startRow(Row) will be called(you can set row properties, such as, row height here) and then the row properties are saved. Then nextCell() will be checked, if a valid column index to be returned, startCell(Cell) will be called(you can set cell properties and value here) and then the cell data will be saved. If nextCell() returns -1, one row finished and nextRow() will be checked to get next row to be saved. If nextRow() returns -1, one sheet finished.
Also, you may zip the .java extension files prior attaching here as you cannot directly attach the .JAVA file here.
Hope, this will help you.
The issues you have found earlier (filed as 20501) have been fixed in this update.
This message was posted using Notification2Forum from Downloads module by aspose.notifier.
Is this supported in the current .NET version of aspose.cells?
Thanks for your question.
Aspose.Cells for .NET has done lot of memory improvements recently. You should give it a try.
Please download: Aspose.Cells
for .NET v18.104.22.168