J'utilise JXL pour écrire un fichier Excel de 50000 lignes et 30 colonnes. Mon code ressemble à ceci:JAVA - Erreur de mémoire insuffisante lors de l'écriture de cellules Excel en jxl
for (int j = 0; j < countOfRows; j ++) {
myWritableSheet.addCell(new Label(0, j, myResultSet.getString(1), myWritableCellFormat));
myWritableSheet.addCell(new Label(1, j, myResultSet.getString(2), myWritableCellFormat));
.....
.....
}
Tout en écrivant les cellules, le programme va plus lent et plus lent
et enfin autour de la rangée 25000 Je reçois l'erreur suivante:
Exception dans le thread " Discussion-3" java.lang.OutOfMemoryError: Java espace de tas à jxl.write.biff.WritableSheetImpl.getRowRecord (WritableSheetImpl.java:984) à jxl.write.biff.WritableSheetImpl.addCell (WritableSheetImpl.java:951) à KLL.ConverterMainFrame $ exportToXLSBillRightsThread.run (ConverterMainFrame.java:6895)
Il est toujours difficile en Java de gérer la mémoire.
Dans ce cas, il semble que ce soit le problème de jxl.
Existe-t-il un moyen d'écrire le fichier, d'effacer la mémoire et de coninuer des cellules d'écriture toutes les 1000 cellules?
Est-ce que ce serait une bonne idée ou quoi d'autre proposeriez-vous comme solution?
Je ne trouve pas setUseTemporaryFileDuringWrite dans l'objet WorkbookSettings. Quelle version de jxl avez-vous? (Voir une réponse que j'ai posté ci-dessous pour plus d'informations) –
@Stefanos, selon les javadocs, il semble que cette fonctionnalité est disponible dans verison> = 2.6.9 – Mark