作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将工作簿的一张工作表(包括样式)复制到新工作簿。
我尝试迭代所有单元格并且
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/
我是一名优秀的程序员,十分优秀!