我想将工作簿的一张工作表(包括样式)复制到新工作簿。
我尝试迭代所有单元格并且
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 解决了这个问题
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);
}
关于java - 将样式从一个 Excel 工作簿复制到另一个 Excel 工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45273676/