使用Apache POI的cloneSheet方法复制sheet时可能会出现Excel文件损坏的问题。解决方法是使用Workbook.createSheet方法来创建新的sheet,并使用copySheet方法将原始sheet的内容复制到新的sheet中。下面是一个示例代码:
// create a new sheet
Sheet newSheet = workbook.createSheet("new sheet");
// copy the original sheet to the new sheet
Sheet originalSheet = workbook.getSheet("original sheet");
workbook.cloneSheet(workbook.getSheetIndex(originalSheet));
int newIndex = workbook.getNumberOfSheets() - 1;
Sheet clonedSheet = workbook.getSheetAt(newIndex);
workbook.setSheetName(newIndex, newSheetName);
SheetCopier.copySheet(originalSheet, clonedSheet);
这个示例代码使用Workbook.createSheet方法创建了一个新的sheet,然后使用Workbook.cloneSheet方法来克隆原始sheet,并将克隆的sheet放置在新的sheet前面。最后,使用SheetCopier.copySheet方法将原始sheet的内容复制到新的sheet中。这样就可以避免Apache POI Clone Sheet corrupting the excel file的问题。