我想将一张工作簿(包括样式)复制到新工作簿中。
我尝试了所有单元的迭代
CellStyle newCellStyle = workbook.createCellStyle();
newCellStyle.cloneStyleFrom(oldCell.getCellStyle());
newCell.setCellStyle(newCellStyle);
抛出
java.lang.IllegalStateException:超出了单元格样式的最大数量。您可以在.xls工作簿中定义多达4000种样式
CellStyle newCellStyle = oldCell.getCellStyle();
newCell.setCellStyle(newCellStyle);
抛出
java.lang.IllegalArgumentException:此样式不属于提供的工作簿。您是否正在尝试将样式从一个工作簿分配到另一个工作簿的单元格?
复制样式的正确方法是什么?
最佳答案
用包含样式的哈希表解决了
HashMap<Integer, CellStyle> styleMap = new HashMap<Integer, CellStyle>();
public void copyCell(Cell oldCell, Cell newCell){
int styleHashCode = oldCell.getCellStyle().hashCode();
CellStyle newCellStyle = styleMap.get(styleHashCode);
if(newCellStyle == null){
newCellStyle = newCell.getSheet().getWorkbook().createCellStyle();
newCellStyle.cloneStyleFrom(oldCell.getCellStyle());
styleMap.put(styleHashCode, newCellStyle);
}
newCell.setCellStyle(newCellStyle);
}