如何用Java将一个Excel的文件的数据读取到另一个Excel中?

如何用Java将一个Excel的文件的数据读取到另一个Excel中?

我有两个excel文件,希望将A文件中的数据合并在B文件中。有没有推荐的方案

阅读 1.5k
avatarAI BotBETA

当然,可以使用 Java 和 Apache POI 库来读取一个 Excel 文件并将其内容写入另一个 Excel 文件。Apache POI 是一个流行的库,可以用于处理 Microsoft Office 格式的文件,包括 Excel。

以下是一个简单的示例,说明如何使用 Apache POI 读取一个 Excel 文件并将数据写入另一个 Excel 文件。

首先,确保在你的项目中添加了 Apache POI 依赖。如果你使用 Maven,可以在你的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version> <!-- 请检查是否有更新的版本 -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0.0</version> <!-- 请检查是否有更新的版本 -->
</dependency>

然后,你可以使用以下 Java 代码来读取一个 Excel 文件并将其内容写入另一个 Excel 文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;

public class ExcelCopy {
    public static void main(String[] args) throws IOException {
        // 源文件路径和目标文件路径
        String sourceFilePath = "path_to_source_file.xlsx";
        String targetFilePath = "path_to_target_file.xlsx";

        // 读取源文件
        FileInputStream fileInputStream = new FileInputStream(new File(sourceFilePath));
        Workbook workbook = new XSSFWorkbook(fileInputStream);
        Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
        Iterator<Row> iterator = sheet.iterator();

        // 创建目标文件并写入数据
        Workbook newWorkbook = new XSSFWorkbook(); // 新建一个工作簿
        Sheet newSheet = newWorkbook.createSheet("Sheet1"); // 创建新的工作表
        int rowIndex = 0;
        while (iterator.hasNext()) { // 遍历源文件的每一行
            Row sourceRow = iterator.next();
            Row targetRow = newSheet.createRow(rowIndex++); // 在目标文件中创建新的行
            copyRow(sourceRow, targetRow); // 将数据从源行复制到目标行
        }
        fileInputStream.close(); // 关闭源文件流

        // 将目标文件写入磁盘并关闭流
        try (FileOutputStream fileOutputStream = new FileOutputStream(targetFilePath)) {
            newWorkbook.write(fileOutputStream);
        } finally {
            newWorkbook.close(); // 关闭目标工作簿流
        }
    }
}
2 个回答

推荐方案很简单。
第一步:读取A文件数据。
第二步:读取B文件数据。
第三步:按你的逻辑进行数据合并。
第四步:写C文件。

GcExcel 支持按区域读取数据,读取数据后是二维数组,也支持直接把二维数组设置到特定区域中。
给区域设置值 - GcExcel 中文文档Java版 | 服务端高性能表格组件 - 葡萄城

public void CopyAcrossWorkbook(){
    Workbook wb1 = new Workbook();
    Workbook wb2 = new Workbook();
    wb1.open("file1.xlsx");
    wb2.open("file2.xlsx");
    Object data = wb1.getWorksheets().get(0).getRange("A1:D20").getValue();
    wb2.getWorksheets().get(0).getRange("A1:D20").setValue(data);

    wb2.save("file2.xlsx");
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题