如何使用 Java分割 Excel 工作表

在Excel中创建的大多数商业报告都不是单页的文档,而是包含了多个上下文相关的信息并存储在多个工作表中。随着文件规模的增加以及诸如数据隔离的需求,需要将Excel工作表进行合理的分割。原生的Excel不支持分割的函数,使用VBA则又有可能引入恶意软件攻击的风险。本文将为大家介绍如何通过编程方法将工作表从源工作簿复制到目标工作簿来实现分割。

发布于 2024/04/02 14:03

GcExcel

前言

在Excel中创建的大多数商业报告都不是单页的文档,而是包含了多个上下文相关的信息,这些信息通常被存储在多个工作表中。例如我们的一些地区销售报告、按部门分类的员工记录、每家店铺的库存清单等。

然而,随着Excel文件中工作表数量的增加,在单一文档内导航和管理数据会变得十分具有挑战性。此外,因为这些Excel文档包含了并非所有相关方都应看到的信息,所以在不同的相关方之间共享这样的Excel文档不是一个明智的方案。因此,有必要将这些多工作表的Excel文档分割成若干个较小的文档,以便更容易管理、提高阅读效率,同时做到合理的数据隔离。

尽管Excel在功能上占据主导地位,但它不提供原生的函数来分割工作表。因此你需要手动进行此操作,或者使用VBA。虽然手动方法效率低且容易出错,但引入VBA则使文件遭受到恶意程序的攻击的风险增大。

GrapeCity Documents for Excel(以下简称 GcExcel )提供了几种通过Java语言编程的方法,可以将Excel文件中的多个工作表分割成独立的Excel文档,例如:

  • 通过从源工作簿复制到目标工作簿来分割工作表

  • 通过从源工作簿移动到目标工作簿来分割工作表

  • 通过从源文件删除不需要的工作表并将其另存为新文档来分割工作表

  • 通过从源到目标工作簿复制并粘贴内容等方式分割工作表

本文将为大家介绍如何通过编程方法将工作表从源工作簿复制到目标工作簿来实现分割。

应用案例

假设你现在作为你公司的首席销售官,准备了一个Excel报表,其中按区域分别在不同的工作表上包含了销售分析信息。你想要将这份报告分享给区域销售经理们。但是,你希望将各个工作表分离成独立的Excel文件,以隔离不同区域的分析细节,如下图所示:

让我们看看如何通过使用GcExcel通过3个简单的步骤为每个工作表生成独立的Excel文件。

我们需要在遵循GcExcel的产品文档中描述的规则的情况下于IDEA中使用GcExcel。

操作步骤

步骤1- 初始化工作簿

第一步是加载你想要拆分工作表的源工作簿。使用GcExcel,你可以通过IWorkbook接口的Open方法加载Excel文件,如下所示:

Workbook workbook = new Workbook();
workbook.open("input.xlsx");

步骤2 - 添加拆分Excel工作表的逻辑

完成第一步后,紧接着是添加拆分源工作簿中工作表的逻辑,包括:

  • 创建一个循环,遍历源工作簿中的每个工作表,并按需进行拆分

  • 初始化一个临时工作簿

  • 使用IWorksheets接口的Copy方法将当前工作表从源工作簿复制到临时工作簿的末尾

  • 删除临时工作簿中的默认工作表

//创建一个循环
for (IWorksheet worksheet : workbook.getWorksheets()) {
    //初始化一个临时工作簿,粘贴工作表,删除临时工作表
    Workbook tempWorkbook = new Workbook();
    worksheet.copy(tempWorkbook);
    tempWorkbook.getWorksheets().get("Sheet1").delete();
}

步骤3 - 保存拆分的Excel工作表

最后,使用IWorkbook接口的Save方法将拆分的工作表保存为独立的Excel或其他格式的文件,如下所示:

tempWorkbook.save(worksheet.getName()+".xlsx",SaveFileFormat.Xlsx);// Excel文件
tempWorkbook.save(worksheet.getName()+".pdf",SaveFileFormat.Pdf);// PDF文件

完整的代码片段如下所述:

Workbook workbook = new Workbook();
workbook.open("test.xlsx");
for (IWorksheet worksheet : workbook.getWorksheets()) {
    Workbook tempWorkbook = new Workbook();
    worksheet.copy(tempWorkbook);
    tempWorkbook.getWorksheets().get("Sheet1").delete();
    tempWorkbook.save(worksheet.getName()+".xlsx",SaveFileFormat.Xlsx);
}

除此之外,GcExcel还提供了一些来自IWorksheets接口的其他方法,比如CopyAfter和CopyBefore,以满足特定Excel需求的工作表拆分。此外,它还提供了Move、MoveAfter和MoveBefore方法,通过将工作表从源Excel文件移动到目标Excel文件来拆分工作表。

总结

Excel文件解决方案工具(GcExcel)是一个强大的工具,设计用于使用Java简化Excel文档的创建、读取和编辑。它提供了一种简单高效的方式来以编程方式处理Excel文档。有了现成的API,你可以仅用几行代码就完成所需的Excel操作,如拆分工作表一样。编程方式处理Excel文档可以节省宝贵的时间和确保数据的精确性。如果您想了解更多的信息,欢迎点击这里查看。

GcExcel | 下载试用

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

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

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

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