import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class EasyExcelCopySheetExample {
public static void main(String[] args) {
// 原始Excel文件路径
String originalFilePath = "path/to/your/original.xlsx";
// 目标Excel文件路径
String targetFilePath = "path/to/your/target.xlsx";
// 要复制的sheet的名字
String sheetNameToCopy = "Sheet1";
try (InputStream inputStream = new FileInputStream(originalFilePath);
Workbook workbook = new XSSFWorkbook(inputStream)) {
// 读取原始Excel的sheet
com.alibaba.excel.EasyExcel.read(workbook, null, new AnalysisEventListener<Object>() {
@Override
public void invoke(Object data, AnalysisContext context) {
// 这里只是读取数据,并不做处理
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 读取完成后,开始写入到新的Excel
try (FileOutputStream outputStream = new FileOutputStream(targetFilePath)) {
// 创建新的Excel写入器
ExcelWriterBuilder writerBuilder = EasyExcel.write(outputStream, null);
// 创建sheet写入器
ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet(sheetNameToCopy);
// 获取原始sheet
com.alibaba.excel.write.metadata.WriteSheet writeSheet = sheetBuilder.build();
// 创建Excel写入器
com.alibaba.excel.ExcelWriter excelWriter = writerBuilder.build();
// 这里应该是复制sheet的逻辑,但EasyExcel没有直接提供复制sheet的API
// 因此,需要手动复制sheet中的每一行
// 假设原始sheet中存储的是某种类型的对象列表
// 这里应该读取原始sheet中的数据,然后写入到新的sheet中
// 由于不知道原始sheet的内容类型,这里无法给出具体的实现
// ... 省略复制sheet内容的逻辑 ...
// 最后,别忘了关闭Excel写入器
excelWriter.finish();
} catch (IOException e) {
e.printStackTrace();
}
}
}).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}
}
}