当前位置: 首页 > 知识库问答 >
问题:

创建具有POI的单元格时出错

慕祯
2023-03-14

我做了一个从Java到xls的导出,我使用POI库。

我的createCell方法:

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;
}

我在一个For中调用这个方法,我有这样的消息错误:

Echec de l'export:超出了单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式

如何重用我的单元格而不必重新创建每个迭代?

THX

共有2个答案

邢焱
2023-03-14

使用,

newCellStyle = oldCell.getCellStyle();
newCell.setCellStyle(newCellStyle); 

而不是,

NewCellStyle.ClonStyleFrom(oldCell.GetCellStyle());

贺华容
2023-03-14

不能对多行重复使用同一单元格。相反,将相同的值应用于新创建的单元格。但可以对多个单元格使用相同的样式。

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);
}
 类似资料: