我发现的文档没有解决这个问题。我认为调用cell.setCellStyle(a)和cell.setCellStyle(b)将完全覆盖样式a并改为应用样式b。但是,它似乎正在应用两者,因为样式不冲突。这是预期的行为还是魔术?
答案 0 :(得分:1)
嗯,这是setCellStyle()
的源代码:
public void setCellStyle(CellStyle style) {
if(style == null) {
if(_cell.isSetS()) _cell.unsetS();
} else {
XSSFCellStyle xStyle = (XSSFCellStyle)style;
xStyle.verifyBelongsToStylesSource(_stylesSource);
long idx = _stylesSource.putStyle(xStyle);
_cell.setS(idx);
}
}
_cell
的类型为org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell
,我无法在线找到源代码。但是,由于对_cell.setS(idx)
的调用仅传入索引,因此API看起来不够丰富,无法支持样式的合并。我强烈怀疑你的第二种风格具有你所看到的所有属性。