cloneStyleFrom显示了使用java poi处理cellStyle时的ArrayIndexOutOfBound



我正在尝试将excel工作簿复制到另一个excel工作簿(一些单元格值需要根据进行一些计算(我还需要复制CellStyles,因为有带样式的Data和Amount字段。我使用以下代码行:

CellStyle CellStyle=wb_out.createCellStyle((;

cellStyle.cloneStyleFrom(cell_in.getCellStyle(((;

Cell Cell_out=row_out.createCell(cellIndex(;

cell_out.setCellValue(value(;

cell_out.setCellStyle(cellStyle(;

对于大文件,cloneStyleFrom抛出ArrayIndexOutofBound错误,我们该如何解决这个问题。

提前谢谢。

基本上可以创建的样式数量是有限制的,如果excel表是一个大文件,则会越过限制并引发错误"ArrayIndexOutofBound"。这被称为样式爆炸。为了避免这种情况,您必须创建单独的单元格样式,并在需要的地方使用它这是我尝试过的,而且奏效了。

我为Date格式和Currency格式创建了一个单元格样式,并在需要的地方应用它们。

CellStyle cellStyleDate=wb_out.createCellStyle((;short-dateFormat=wb_out.createDataFormat((.getFormat("d-mmm"(;cellStyleDate.setDataFormat(日期格式(;

CellStyle cellStyleCurrent=wb_out.createCellStyle((;short currencyFormat=wb_out.createDataFormat((.getFormat("#,##0.0"(;cellStyleCurrent.setDataFormat(currencyFormat(;

同样,可以创建一个单元格样式,并向其添加不同的特定格式或属性,然后在工作簿中使用,像这样:

cell_out.setCellStyle(cellStyleDate(;

最新更新