前言

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

扩展链接:

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

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

Java批量操作Excel文件实践

如在 Java 中分割 Excel 工作表的更多相关文章

  1. Java 复制Excel工作表

    本文归纳了关于Java如何复制Excel工作表的方法,按不同复制需求,可分为: 1. 复制工作表 1.1 在同一个工作簿内复制工作表 1.2 在不同工作簿间复制工作表 2. 复制指定单元格数据 对于复 ...

  2. C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】

    C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...

  3. C#中如何在Excel工作表创建混合型图表

    在进行图表分析的时候,我们可能需要在一张图表呈现两个或多个样式的图表,以便更加清晰.直观地查看不同的数据大小和变化趋势.在这篇文章中,我将分享C#中如何在一张图表中创建不同的图表类型,其中包括如何在同 ...

  4. 获取Excel工作薄中Sheet页(工作表)名集合

    #region 获取Excel工作薄中Sheet页(工作表)名集合 02./// <summary> 03./// 获取Excel工作薄中Sheet页(工作表)名集合 04./// < ...

  5. C#合并选中EXCEL中的各个工作表

    合并选中EXCEL中的各个工作表,以第一个选中的EXCEL文件里的工作表进行匹配,遍历后面的每个EXCEL文件,有相同的工作表就合并: private void button1_Click(objec ...

  6. 在Excel工作表单元格中引用当前工作表名称

    在Excel工作表单元格中引用当前工作表名称 有多份Excel表格表头标题都为"××学校第1次拉练考试××班成绩表",由于工作表结构都是一样的,所以我每次都是复制工作表然后编辑修改 ...

  7. java生成简单Excel工作薄

    前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jx ...

  8. C#将一个excel工作表根据指定范围拆分为多个excel文件

    C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其 ...

  9. C# 原样复制excel工作表

    在excel中,工作表是工作薄的组成部分,一个工作薄可以由一个或多个工作表组成,一个工作薄也可以说是一个excel文档,正因为如此,excel工作表的复制也就分为两种类型:在同一文档之内复制和在不同文 ...

  10. 使用宏命令撤销EXCEL工作表保护

    EXCEL工作表编辑资料,设置了工作表保护后,不能对表格进行插入删除操作.如果没有密码,很简单:工具-选项—工作表保护——撤消工作表保护 就可以了.如果忘记密码,如下操作: 1. 打开文件 2. 工具 ...

随机推荐

  1. FastGateway 发布v0.0.0.5

    FastGateway 发布v0.0.0.5 修复构建错误 修复docker-compose执行目录 修改请求来源分析数据列表展示 update README.md. 增加默认证书 修复构建脚本目录错 ...

  2. go-ini解析ini文件

    文档 https://github.com/go-ini/ini https://ini.unknwon.io/docs/intro/getting_started go get -u gopkg.i ...

  3. Vue3学习(十九) - TreeSelect 树选择

    写在前面 我知道自己现在的状态很不好,以为放个假能好好放松下心情,结果昨晚做梦还在工作,调试代码,和领导汇报工作. 天呐,明明是在放假,可大脑还在考虑工作的事,我的天那,这是怎么了? Vue页面参数传 ...

  4. 矩池云快速安装torch-sparse、torch-geometric等包

    租用机器,按自己需要的环境选择一个环境,我这里选择的是Pytorch 1.10. 租用成功后点击租用页面的 Jupyterlab 链接. Jupyterlab 里新建一个Terminal 用来安装环境 ...

  5. MySQL基础3-数据库增删改操作

    一.SQL通用语法 SQL 语法可以单行或者多行书写,以分号结尾. SQL 语句可以使用空格/缩进来增强语句的可读性. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写. 注释: 单 ...

  6. 图查询语言 nGQL 简明教程 vol.01 快速入门

    本文旨在让新手快速了解 nGQL,掌握方向,之后可以脚踩在地上借助文档写出任何心中的 NebulaGraph 图查询. 视频 本教程的视频版在B站这里. 准备工作 在正式开始 nGQL 实操之前,记得 ...

  7. Java 多线程------多线程的创建(2),方式一:继承于Thread类

    1 package com.bytezero.threadexer; 2 3 /** 4 * 创建两个分线程,其中一个线程遍历100以内的偶数,另一个线程遍历100以内的奇数 5 * 6 * 7 * ...

  8. Python 初学者容易踩的坑

    哈喽大家好,我是咸鱼. 今天咸鱼列出了一些大家在初学 Python 的时候容易踩的一些坑,看看你有没有中招过. 原文:https://www.bitecode.dev/p/unexpected-pyt ...

  9. 【预训练语言模型】 使用Transformers库进行BERT预训练

    基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练. 鉴于算力限制,选用了较小的英文数据集wikitext-2 目的:跑通Mask语言模型的预训练流程 一.准 ...

  10. 光感红外接近传感器AP3426调试总结

    一 概念 AP3426是一个高度集成了红外,光感和接近角的传感器.该传感器凭借着高灵敏度广泛应用在可穿戴领域.笔者在一个产品上用了这个传感器.花了一些时间来调试和熟悉这个传感器,这里就做一个总结吧. ...