首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用apache POI和java将一个工作簿工作表复制到另一个工作簿表

要使用Apache POI和Java将一个工作簿的工作表复制到另一个工作簿表,您可以按照以下步骤操作:

  1. 首先,确保您已经安装了Apache POI库。如果没有,请在Maven或Gradle项目中添加以下依赖项:
代码语言:<dependency>
复制
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>5.2.1</version>
</dependency><dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>5.2.1</version>
</dependency>
  1. 接下来,创建一个Java类,并导入以下所需的包:
代码语言:java
复制
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;
  1. 在Java类中,创建一个方法,该方法将接受两个参数:源工作簿和目标工作簿的文件路径。在此方法中,您将打开源工作簿并复制工作表到目标工作簿。
代码语言:java
复制
public void copyWorksheet(String sourceWorkbookPath, String targetWorkbookPath) throws IOException {
    // 打开源工作簿
    try (FileInputStream inputStream = new FileInputStream(new File(sourceWorkbookPath))) {
        Workbook sourceWorkbook = new XSSFWorkbook(inputStream);

        // 打开目标工作簿
        try (FileInputStream targetInputStream = new FileInputStream(new File(targetWorkbookPath))) {
            Workbook targetWorkbook = new XSSFWorkbook(targetInputStream);

            // 复制工作表
            Sheet sourceSheet = sourceWorkbook.getSheetAt(0);
            Sheet targetSheet = targetWorkbook.createSheet(sourceSheet.getSheetName());
            copySheet(sourceSheet, targetSheet, sourceWorkbook, targetWorkbook);

            // 保存目标工作簿
            try (FileOutputStream outputStream = new FileOutputStream(new File(targetWorkbookPath))) {
                targetWorkbook.write(outputStream);
            }
        }
    }
}
  1. 创建一个copySheet方法,该方法将接受源工作表、目标工作表、源工作簿和目标工作簿作为参数。在此方法中,您将复制源工作表的内容到目标工作表。
代码语言:java
复制
private void copySheet(Sheet sourceSheet, Sheet targetSheet, Workbook sourceWorkbook, Workbook targetWorkbook) {
    // 复制行
    for (Row sourceRow : sourceSheet) {
        Row targetRow = targetSheet.createRow(sourceRow.getRowNum());
        copyRow(sourceRow, targetRow, sourceWorkbook, targetWorkbook);
    }

    // 复制列样式
    for (int i = 0; i< sourceSheet.getNumMergedRegions(); i++) {
        CellRangeAddress sourceRegion = sourceSheet.getMergedRegion(i);
        CellRangeAddress targetRegion = new CellRangeAddress(sourceRegion.getFirstRow(), sourceRegion.getLastRow(),
                sourceRegion.getFirstColumn(), sourceRegion.getLastColumn());
        targetSheet.addMergedRegion(targetRegion);
    }
}
  1. 创建一个copyRow方法,该方法将接受源行、目标行、源工作簿和目标工作簿作为参数。在此方法中,您将复制源行的内容到目标行。
代码语言:java
复制
private void copyRow(Row sourceRow, Row targetRow, Workbook sourceWorkbook, Workbook targetWorkbook) {
    // 复制单元格
    for (Cell sourceCell : sourceRow) {
        Cell targetCell = targetRow.createCell(sourceCell.getColumnIndex());
        copyCell(sourceCell, targetCell, sourceWorkbook, targetWorkbook);
    }

    // 复制行样式
    targetRow.setHeight(sourceRow.getHeight());
}
  1. 创建一个copyCell方法,该方法将接受源单元格、目标单元格、源工作簿和目标工作簿作为参数。在此方法中,您将复制源单元格的内容到目标单元格。
代码语言:java
复制
private void copyCell(Cell sourceCell, Cell targetCell, Workbook sourceWorkbook, Workbook targetWorkbook) {
    // 复制单元格样式
    targetCell.setCellStyle(sourceWorkbook.getCellStyleAt(sourceCell.getCellStyle().getIndex()));

    // 复制单元格值
    switch (sourceCell.getCellType()) {
        case STRING:
            targetCell.setCellValue(sourceCell.getStringCellValue());
            break;
        case NUMERIC:
            targetCell.setCellValue(sourceCell.getNumericCellValue());
            break;
        case BOOLEAN:
            targetCell.setCellValue(sourceCell.getBooleanCellValue());
            break;
        case FORMULA:
            targetCell.setCellFormula(sourceCell.getCellFormula());
            break;
        case BLANK:
            targetCell.setCellValue("");
            break;
        default:
            break;
    }
}

现在,您可以使用copyWorksheet方法将源工作簿的工作表复制到目标工作簿的工作表。例如:

代码语言:java
复制
public static void main(String[] args) {
    String sourceWorkbookPath = "source.xlsx";
    String targetWorkbookPath = "target.xlsx";
    new ApachePOIExample().copyWorksheet(sourceWorkbookPath, targetWorkbookPath);
}

这将复制源工作簿的第一个工作表到目标工作簿的第一个工作表。如果您需要复制其他工作表,请相应地更改getSheetAt方法的参数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA代码:拆分工作簿示例——工作簿中的每个工作保存为单独的工作簿

标签:VBA 有时候,我们想将工作簿中的每个工作都保存为一个单独的工作簿。 你可以使用下面的操作逐个保存工作: 1.在工作标签中单击右键。 2.选取“移动或复制…”命令。...3.选择“(新工作簿)”。 4.保存该工作簿。 图1 这样,有多少工作,你就要操作上面的步骤多少次。 然而,如果存在很多个工作簿,这样的重复工作使用VBA是最合适的。...msoFileDialogFolderPicker) .InitialFileName =Application.DefaultFilePath & "\" .Title = "选择保存工作的位置...Next wks Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 只需在要拆分的工作簿中运行上述代码...,就可将该工作簿中的所有工作全部保存为单独的工作簿

4K11
  • VBA: 多个工作簿的第一张工作合并到一个工作簿

    一般的操作方法是打开两个工作簿(目标工作簿待转移的工作簿),然后选中需要移动的工作,右键单击以后选择“移动或复制”。接下来在新的对话框里面进行设置。 这种方法适合在移动少量工作的时候使用。...如果有很多的工作簿,都需要进行移动的话,一个一个打开然后再操作比较费时费力。这时就可以使用VBA来批量进行操作。...在目标工作簿内,插入一个模块,然后导入如下的代码: Option Explicit Sub MergeWorkbook() '多个工作簿的第一张工作合并到目标工作簿中...End Sub (1) 目标工作簿待转移的工作簿放在同一个文件夹内; (2)上述代码要实现的功能是,将同一个文件夹内所有工作簿(目标工作簿除外)的第一张工作拷贝到目标工作簿内,并将名设置为拷贝前所属的工作簿名称...转移前: 转移后: 参考资料: [1] 如何使用Excel VBA多个工作簿的全部工作合并到一个工作簿中(https://zhuanlan.zhihu.com/p/76786888)

    5.8K11

    yhd-VBA从一个工作簿的某工作中查找符合条件的数据插入到另一个工作簿的某工作

    今天把学习的源文件共享了出来,供大家学习使用 上次想到要学习这个 结合网友也提出意见,做一个,如果有用,请下载或复制代码使用 【问题】我们在工作中有时要在某个文件(工作簿)中查找一些数据,提取出来...想要做好了以后同样的工作就方便了 【想法】 在一个程序主控文件中 设定:数据源文件(要在那里查找的工作簿) 设定:目标文件(要保存起来的那个文件) 输入你要查找的数据:如:含有:杨过,郭靖的数据。...要复制整行出来 主控文件设定如图 数据源文件有两个工作 查找到"郭靖"的数据保存到目标文件的【射雕英雄传】工作 查找到"杨过"的数据保存到目标文件的【第一个工作 【代码】 Sub...从一个工作簿的某工作中查找符合条件的数据插入到另一个工作簿的某工作中() Dim outFile As String, inFile As String Dim outWb As...") End If '==end=工作内部 End With

    5.3K22

    神奇的AI编程小例子——合并两个工作簿工作一个工作簿

    今天帮一个朋友干点活,涉及到了两个表格文件的工作合并到一个工作簿,分别作为单独的工作。...] # 创建目标工作簿中的新 target_sheet = target_workbook.create_sheet(title=sheet_name) # 复制其他工作簿的数据到目标工作簿...target_workbook.save('目标工作簿.xlsx') 在示例代码中,你需要将目标工作簿.xlsx其他工作簿.xlsx替换为实际的文件路径。...接下来,我们获取其他工作簿中的名,并使用create_sheet方法在目标工作簿中创建相应的新。 然后,通过遍历其他工作簿中的每个,我们可以复制数据并将其追加到目标工作簿的对应中。...最后,我们保存目标工作簿,以便添加到文件中。 请确保在运行代码之前已经安装了openpyxl库。你可以使用pip命令进行安装,例如:pip install openpyxl。

    25410

    使用VBA图片从一个工作移动到另一个工作

    下面的Excel VBA示例将使用少量的Excel VBA代码图片从一个工作移动到另一个工作。为了实现这个目的,要考虑以下事情: 1.要移动的图片的名称。...3.如何处理所选内容要替换的图片? 这里,使用数据验证列表来选择一个国家(的国旗),而Excel VBA完成其余的工作。以下是示例文件的图片,以方便讲解。...图1 所有图片(旗帜)都有一个名称(如中国、加拿大、巴哈马等),并将其添加到验证列表中。只需从蓝色下拉列表中选择要移动的图片名称,然后单击移动按钮,就可将相应的图片(旗帜)移动到另一个工作。...当然,这里可以调整让工作事件来处理。...然后单元格E13中名称对应的图片复制到工作1的单元格D8。演示如下图2所示。 图2 有兴趣的朋友可以到原网站下载原始示例工作簿。也可以到知识星球App完美Excel社群下载汉化后的示例工作簿

    3.9K20

    Power Query-汇总文件夹中多工作簿工作一个文件

    Power Query-汇总文件夹中多工作簿工作一个文件 我们在常感叹“不懂office Excel的是电子表格,懂的就是Excel”!! 为什么呢!...如果当excel为电子表格的人,做了一辈子的工作也是重重复复的“复制—粘贴”的工作,因为Excel中有VBA编程的功能,能使用很多重复的工作一个小程序是搞掂,所以就是“Excel”了。...当我们在学习VBA编程汇总多工作簿工作一个文件时,微软在新的Office版本中有开发出个神器Power BI, 这个组件在office2013office2016是整合在一起的,office2010...两列,删除其他列 第五步,点击双箭头的地方出现合并文件窗口,选中Sheet1,(这是说每个文件有三个工作,我只要所有的Sheet1合并就可以啦) 第六步:选中sheet1—确定 第七步:我们可以看到每个的内容已导入啦...,只是每个的标题两行都有!

    2.1K50

    Excel应用实践16:搜索工作指定列范围中的数据并将其复制到另一个工作

    学习Excel技术,关注微信公众号: excelperfect 这里的应用场景如下: “在工作Sheet1中存储着数据,现在想要在该工作的第O列至第T列中搜索指定的数据,如果发现,则将该数据所在行复制到工作...用户在一个对话框中输入要搜索的数据值,然后自动满足前面条件的所有行复制到工作Sheet2中。” 首先,使用用户窗体设计输入对话框,如下图1所示。 ?...Dim rngFoundCell As Range Dim lngCurRow As Long Application.ScreenUpdating = False '赋值为工作...Sheet1 Set wks = Worksheets("Sheet1") With wks '工作中的最后一个数据行 lngRow = .Range(...Sheet2 Sheets("Sheet2").Cells.Clear '获取数据单元格所在的行并复制到工作Sheet2 For Each rngFoundCell

    6K20

    java实现Excel导入导出功能

    在本篇文章中,我们讨论如何使用Java实现Excel导入导出功能。一、Excel文件的读取在Java中,我们可以使用Apache POI库来读取Excel文件。...例如,以下代码获取Excel文件中第一个工作的引用:javaCopy code// 获取第一个工作Sheet sheet = workbook.getSheetAt(0);获取单元格的值一旦我们获取了工作对象...以下是使用POI库来写入Excel文件的基本步骤:创建工作簿首先,我们需要创建一个工作簿对象,用于表示Excel文件。...例如,以下代码创建一个名为“Sheet1”的工作:// 创建工作对象Sheet sheet = workbook.createSheet("Sheet1");创建行单元格一旦我们创建了工作对象...可以使用FileOutputStreamwrite()方法工作簿写入文件。

    2.4K20

    使用Python多个工作保存到一个Excel文件中

    标签:Python与Excel,pandas 本文讲解使用Python pandas多个工作保存到一个相同的Excel文件中。按照惯例,我们使用df代表数据框架,pd代表pandas。...我们仍将使用df.to_excel()方法,但我们需要另一个类pd.ExcelWriter()的帮助。顾名思义,这个类写入Excel文件。...如果仔细阅读pd.to_excel()文档,ExcelWriter实际上是第一个参数。 模拟数据框架 先创建一些模拟数据框架,这样我们就可以使用一些东西了。...numpy as np df_1 = pd.DataFrame(np.random.rand(20,10)) df_2 = pd.DataFrame(np.random.rand(10,1)) 我们介绍两种保存多个工作的...这两种方法的想法基本相同:创建一个ExcelWriter,然后将其传递到df.to_excel()中,用于数据框架保存到Excel文件中。这两种方法在语法上略有不同,但工作方式相同。

    5.9K10

    Excel表格的写入读取

    我们要知道一个Excel文件(工作簿)包含三部分,分别是工作(sheet),行(row),列(cell) 工作簿 工作簿对应的类是 XSSFWorkbook(2007之后),在2007之前对应的类是...HSSFWorkbook 构造方法 new XSSFWorkbook() 创建一个工作簿用于写入文件 new XSSFWorkbook(java.io.InputStream inputstream...) 创建一个工作 XSSFSheet createSheet(String name) 创建一个工作并且指定姓名 XSSFCellStyle createCellStyle()...(sheet) 工作对应的类为XSSFSheet,2007之前对应的是HSSFSheet 一般工作都是在工作簿基础上创建的,因此构造函数也用不到,所以这里就不多说了 常用方法 int...sheet = workbook.createSheet("第一个工作"); // 创建一个工作 XSSFCellStyle style = workbook.createCellStyle(

    1.4K20

    Excel实战技巧77: 实现在当前工作一个使用工作之间自由切换

    Windows有一个另人喜爱的快捷键Alt+Tab,可以在当前应用程序一个使用的应用程序之间来回切换。...Excel也有两个快捷键:Ctrl+PageUPCtrl+PageDown,可以在工作之间导航,它们是按顺序依次切换工作,这样,如果要从工作Sheet1切换到工作Sheet5,要按快捷键4次。...thespreadsheetguru.com分享了使用代码创建的快捷键(Alt+`),可以在当前工作一个使用工作之间切换。...Sh As Object) WorkbookReference = Sh.Parent.Name SheetReference = Sh.NameEnd Sub '在关闭工作簿前保存当前工作信息...Private Sub Workbook_Open() Call TabBack_RunEnd Sub 保存并关闭工作簿,然后重新打开,此时就可以使用快捷键Alt+`在当前工作一个工作之间来回切换了

    1.2K10

    【在线教育】POI入门

    xls 文件读操作 3.2.5 xlsx 文件读操作 3.2.6 读取不同类型的数据 3.POI入门(了解) 3.1 POI 概述 3.1.1 简介 Apache POIApache软件基金会的开放源码函式库...,POI提供API给Java程序对Microsoft Office格式档案读写的功能。...:一个excel文件,就是一个工作簿 工作一个工作簿中,可以所有多个工作Sheet 行:每一个工作,包含多行row 单元格:每行有多个单元格Cell组成。...       Workbook workbook = new HSSFWorkbook(); ​        // 在Excel工作簿中建一工作,其名为缺省值 Sheet0        /...= new XSSFWorkbook(); ​        // 在Excel工作簿中建一工作,其名为缺省值 Sheet0        //Sheet sheet = workbook.createSheet

    1.3K30

    一小时教你轻松学会使用Java 整合 Easy Excel 操作 Excel 文件

    文章目录 一、Apache POI简介 二、POI操作Excel 构建maven项目导入依赖 使用POI实现基本写操作 使用POI实现大数据量写操作 使用POI实现基本读操作 使用POI读取不同类型的数据...三、Easy Excel简介 构建maven项目导入依赖 实现写操作 实现读操作 目前市面上比较流行的操作Excel 文件工具大致有两个,一个Apache POI另一个是阿里的Easy Excel...一、Apache POI简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读写的功能...(); // 1.创建一个工作簿 Workbook workbook = new HSSFWorkbook(); // 2.创建一个工作...= new FileInputStream(PATH + "明细.xls"); // 1.创建一个工作簿 Workbook workbook = new XSSFWorkbook

    1.4K30
    领券