Apache POI克隆风格与获取风格的区别

做什么之间有任何显着的差异:

CellStyle newCellStyle = workbook.createCellStyle(); neweCellStyle.cloneStyleFrom(oldCell.getCellStyle()); newCell.setCellStyle(newCellStyle); 

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

我之所以问这个问题是因为我不知道如果采取第一种方法,我可能会创build太多的CellStyles,如果在一个特定的工作簿中创build了太多的CellStyles,则会遇到问题,工作簿的所有样式都会消失。 那么采取第二种方法有什么不妥?

第一种方法将为每个新的单元格创build一个新的单元格样式,正如您正确地注意到的那样,可能会导致出现“CellStyle爆炸”的情况。

这个解决scheme的潜在好处(或者说是缺点 – 取决于你的用例)是每个单元格引用一个不同的单元格样式对象的情况,所以改变一个单元格的样式不会影响其他单元格(如果你希望将来只修改电子表格的选定部分的样式)。

在第二种方法中,所有引用相同样式的单元格都将被修改,尽pipe通过使用CellUtil可以find一个简洁的方法(在必要的时候),您可以在这里find另一个Stack Overflow的更多细节。