Java复制Excel文件的实现流程

1. 确定使用的依赖

在Java中,我们可以使用Apache POI库来操作Excel文件。因此,我们首先需要在我们的项目中添加POI的依赖。

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

2. 读取原始Excel文件

首先,我们需要读取原始的Excel文件。我们可以使用XSSFWorkbook类来加载Excel文件。

// 导入必要的类
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

// 创建工作簿对象
Workbook workbook = new XSSFWorkbook("原始文件路径");

// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);

3. 创建新的Excel文件并复制数据

接下来,我们需要创建一个新的Excel文件,并将原始文件中的数据复制到新文件中。

// 创建新的工作簿对象
Workbook newWorkbook = new XSSFWorkbook();

// 创建新的工作表
Sheet newSheet = newWorkbook.createSheet("新工作表");

// 遍历原始工作表中的每一行
for (Row row : sheet) {
    // 创建新的行对象
    Row newRow = newSheet.createRow(row.getRowNum());

    // 遍历原始行中的每一个单元格
    for (Cell cell : row) {
        // 创建新的单元格对象
        Cell newCell = newRow.createCell(cell.getColumnIndex());

        // 根据原始单元格的类型复制数据
        switch (cell.getCellType()) {
            case STRING:
                newCell.setCellValue(cell.getStringCellValue());
                break;
            case NUMERIC:
                newCell.setCellValue(cell.getNumericCellValue());
                break;
            case BOOLEAN:
                newCell.setCellValue(cell.getBooleanCellValue());
                break;
            case FORMULA:
                newCell.setCellValue(cell.getCellFormula());
                break;
            default:
                // 其他类型默认为空值
                newCell.setCellValue("");
        }
    }
}

4. 保存新的Excel文件

最后,我们需要将新的Excel文件保存到硬盘上的指定路径。

// 创建输出流
OutputStream outputStream = new FileOutputStream("目标文件路径");

// 将工作簿写入输出流
newWorkbook.write(outputStream);

// 关闭输出流和工作簿对象
outputStream.close();
newWorkbook.close();

完整代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class ExcelCopyExample {
    public static void main(String[] args) {
        try {
            // 创建原始工作簿对象
            Workbook workbook = new XSSFWorkbook("原始文件路径");

            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 创建新的工作簿对象
            Workbook newWorkbook = new XSSFWorkbook();
            // 创建新的工作表
            Sheet newSheet = newWorkbook.createSheet("新工作表");

            // 遍历原始工作表中的每一行
            for (Row row : sheet) {
                // 创建新的行对象
                Row newRow = newSheet.createRow(row.getRowNum());

                // 遍历原始行中的每一个单元格
                for (Cell cell : row) {
                    // 创建新的单元格对象
                    Cell newCell = newRow.createCell(cell.getColumnIndex());

                    // 根据原始单元格的类型复制数据
                    switch (cell.getCellType()) {
                        case STRING:
                            newCell.setCellValue(cell.getStringCellValue());
                            break;
                        case NUMERIC:
                            newCell.setCellValue(cell.getNumericCellValue());
                            break;
                        case BOOLEAN:
                            newCell.setCellValue(cell.getBooleanCellValue());
                            break;
                        case FORMULA:
                            newCell.setCellValue(cell.getCellFormula());
                            break;
                        default:
                            // 其他类型默认为空值
                            newCell.setCellValue("");
                    }
                }
            }

            // 创建输出流
            OutputStream outputStream = new FileOutputStream("目标文件路径");

            // 将工作簿写入输出流
            newWorkbook.write(outputStream);

            // 关闭输出流和工作簿对象
            outputStream.close();
            newWorkbook.close();

            System.out.println("Excel文件复制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是使用Java复制Excel