轻松合并Excel工作表:Java批量操作优化技巧

在使用Excel进行表单设计时,我们经常需要对收集到的信息进行统计分析。例如学校给老师统计课时,医院给医护人员统计班次等。传统的手工方式需要逐个进行数据的对比,然后将计算结果手动填写到一个新的Excel文件中。这种方式不仅费时费力,而且很难确保数据结果的准确性。今天要为大家介绍如何使用Java快速实现批量Excel工作表的合并。

发布于 2023/09/23 11:43

GcExcel

前言

在使用Excel进行表单设计时,我们经常需要对收集到的信息进行统计分析。例如,学校给老师统计课时,医院给医护人员统计班次等。传统的手工方式需要逐个进行数据的对比,然后将计算结果手动填写到一个新的Excel文件中。但是这种方式不仅费时费力,而且很难确保数据结果的准确性。为了能够高效地解决这个问题,本文为大家介绍如何使用Java快速实现批量Excel工作表的合并。

使用Java实现工作表的快速合并

首先,给大家介绍一下两种复制工作表的方式:

  1. 把多个文件的工作表复制到同一个文件中。例如有10个Excel文件,每个文件中有一个工作表,最终结果是生成一个新文件,里面有10个工作表。

  2. 把多个文件的工作表内容,截取一部分需要的,复制到同一个工作表中。例如有10个Excel文件,每个文件中有一个工作表,只需要该工作表中A1:D24范围内的数据,最终复制到新文件中的一个工作表中。

下面小编依次为大家介绍两种情况下的实现方法(以下图的example.xlsx文件为例)。


1. 把多个文件的工作表复制到同一个文件中

首先,分别创建两个workbook,然后使用workbook打开example.xlsx,获取 A1:D24的区域,并且分别复制到对应Excel文件中 A1:D24 和 F1:G24 的区域。

//创建workbook
Workbook wb = new Workbook();
//使用workbook打开example.xlsx
wb.open("resources/example.xlsx");
Workbook newWb = new Workbook();
//获取 A1:D24的区域,并且分别复制到对应Excel文件中 A1:D24 和 F1:G24 的区域。
wb.getActiveSheet().getRange("A1:D24").copy(newWb.getActiveSheet().getRange("A1:D24"));
wb.getActiveSheet().getRange("A1:D24").copy(newWb.getActiveSheet().getRange("F1:G24"));
newWb.save("output/mergedSheet.xlsx");

结果如下:


2. 把多个文件的工作表内容,截取一部分需要的,复制到同一个工作表中

依然是创建两个workbook,使用workbook打开example.xlsx,模拟两次复制到newWb中。

这里使用的是copyBefore,意思是复制后,位置在对应目标工作表的前面。

//创建workbook
Workbook wb = new Workbook();
wb.open("resources/example.xlsx");
Workbook newWb = new Workbook();
//copyBefore:复制后,位置在对应目标工作表的前面。
wb.getActiveSheet().copyBefore(newWb.getWorksheets().get(0));
wb.getActiveSheet().copyBefore(newWb.getWorksheets().get(0));
newWb.save("output/copySheet.xlsx");

结果如下:

可以看到,在Sheet1前面,添加了两个example工作表。


总结

复制工作表在数据处理的场景中有非常多的应用。本文所用的到Excel库来自葡萄城的产品GcExcel,GcExcel提供的API对于复制工作表来说非常地方便、易用。除了上面展示的copyBefore、copyAfter之外,GcExcel还提供了很多其他的API,如果您对此感兴趣,可参考GcExcel的产品文档了解更多信息。

GcExcel | 下载试用

GrapeCity Documents for Excel (简称:GcExcel)是一款基于 Java 平台的服务端高性能表格组件,可与纯前端表格控件 SpreadJS 前后端兼容,无需依赖 Office、POI 或第三方应用软件,在前端展示电子表格数据,在服务端批量创建、加载、编辑、打印、导入/导出 Excel 文档,为您开发的应用程序提供在线文档的前后端数据同步、在线填报与服务端批量导出与打印,以及类 Excel 报表模板设计与服务端高性能处理等一整套类 Excel 全栈解决方案

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态