java
@RequestMapping("excel")
public void excel(){
String sourceFilePath = "D:\\source.xlsx"; // 原 Excel 文件路径
String destinationFilePath = "D:\\destination.xlsx"; // 目标 Excel 文件路径
String sheetNameToCopy = "Sheet1"; // 要复制的工作表名称
try (FileInputStream sourceFile = new FileInputStream(sourceFilePath);
XSSFWorkbook sourceWorkbook = new XSSFWorkbook(sourceFile);
XSSFWorkbook destinationWorkbook = new XSSFWorkbook()) {
XSSFSheet sourceSheet = sourceWorkbook.getSheet(sheetNameToCopy);
if (sourceSheet == null) {
System.out.println("Sheet " + sheetNameToCopy + " does not exist in the source file.");
return;
}
// 创建一个新工作表
XSSFSheet newSheet = destinationWorkbook.createSheet(sheetNameToCopy);
// 复制源工作表的数据到新工作表
copySheet(sourceSheet, newSheet);
// 将新的工作簿写入到文件
try (FileOutputStream fileOut = new FileOutputStream(destinationFilePath)) {
destinationWorkbook.write(fileOut);
}
System.out.println("Sheet copied successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void copySheet(XSSFSheet sourceSheet, XSSFSheet destinationSheet) {
// 复制行
for (int i = 0; i <= sourceSheet.getLastRowNum(); i++) {
Row sourceRow = sourceSheet.getRow(i);
if (sourceRow != null) {
Row newRow = destinationSheet.createRow(i);
// 复制单元格
for (int j = 0; j < sourceRow.getLastCellNum(); j++) {
Cell sourceCell = sourceRow.getCell(j);
if (sourceCell != null) {
Cell newCell = newRow.createCell(j);
// 复制单元格的内容
switch (sourceCell.getCellType()) {
case STRING:
newCell.setCellValue(sourceCell.getStringCellValue());
break;
case NUMERIC:
newCell.setCellValue(sourceCell.getNumericCellValue());
break;
case BOOLEAN:
newCell.setCellValue(sourceCell.getBooleanCellValue());
break;
case FORMULA:
newCell.setCellFormula(sourceCell.getCellFormula());
break;
case ERROR:
newCell.setCellErrorValue(sourceCell.getErrorCellValue());
break;
default:
newCell.setCellValue(sourceCell.toString());
break;
}
}
}
}
}
}