Reputation: 9986
I do an export from Java to xls, i use POI library.
My createCell Method:
private Cell createCell(Row ligne, int col, String value, CellStyle style, HSSFWorkbook classeur) {
//org.apache.poi.hssf.usermodel.HSSFOptimiser.optimiseCellStyles(classeur);
CellStyle styleCell = classeur.createCellStyle();
styleCell.cloneStyleFrom(style);
return createCell(ligne, col, value, styleCell);
}
protected Cell createCell(Row ligne, int col, String value, CellStyle style) {
Cell cell = createCell(ligne, col, value);
cell.setCellStyle(style);
return cell;
}
i call this methods in a For, i have this message error:
Echec de l'export: The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
How to reuse my cell without having to recreate each iteration ?
Thx
Upvotes: 7
Views: 20288
Reputation: 57
Use,
newCellStyle = oldCell.getCellStyle();
newCell.setCellStyle(newCellStyle);
instead of,
newCellStyle.cloneStyleFrom(oldCell.getCellStyle());
Upvotes: -1
Reputation: 159
You can not re-use the same cell for multiple rows. Instead, apply same values to a newly created cell. But you can use the same style to multiple cells.
CellStyle cellStyle = workSheet.getWorkbook().createCellStyle();
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
cellStyle.setWrapText(true);
for (int i = 0; i <= records.size(); i++) {
// Create a new row
Row row = workSheet.createRow((short) i);
Cell cell001 = row.createCell(columnIndex);
cell001.setCellValue("some value");
cell001.setCellStyle(cellStyle);
}
Upvotes: 15