我正在尝试将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(;