如在 Java 中分割 Excel 工作表

前言

在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文件,如下所示:

Java 复制代码
Workbook workbook = new Workbook();
workbook.open("input.xlsx");

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

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

  • 创建一个循环,遍历源工作簿中的每个工作表,并按需进行拆分
  • 初始化一个临时工作簿
  • 使用IWorksheets接口的Copy方法将当前工作表从源工作簿复制到临时工作簿的末尾
  • 删除临时工作簿中的默认工作表
Java 复制代码
//创建一个循环
for (IWorksheet worksheet : workbook.getWorksheets()) {
    //初始化一个临时工作簿,粘贴工作表,删除临时工作表
    Workbook tempWorkbook = new Workbook();
    worksheet.copy(tempWorkbook);
    tempWorkbook.getWorksheets().get("Sheet1").delete();
}

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

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

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

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

Java 复制代码
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文档可以节省宝贵的时间和确保数据的精确性。如果您想了解更多的信息,欢迎点击这里查看。

扩展链接:

轻松构建低代码工作流程:简化繁琐任务的利器

数据驱动创新:以Java编程方式定制数据透视表

Java批量操作Excel文件实践