摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

在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等其他API。可以参考GcExcel的产品文档了解更多。

扩展链接:

如何在前端系统中使用甘特图

窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器

探秘移动端BI:发展历程与应用前景解析

轻松合并Excel工作表:Java批量操作优化技巧的更多相关文章

  1. C# 如何合并Excel工作表

    文档合并.拆分是实现文档管理的一种有效方式.在工作中,我们可能会遇到需要将多个文档合并的情况,那如何来实现呢,本文将进一步介绍.关于拆分Excel工作表,可参见这篇文章--C#如何拆分EXCEL工作表 ...

  2. C# 合并Excel工作表

    文档合并.拆分是实现文档管理的一种有效方式.在工作中,我们可能会遇到需要将多个文档合并的情况,那如何来实现呢,本文将进一步介绍.关于拆分Excel工作表,可参见这篇文章——C#如何拆分EXCEL工作表 ...

  3. jxl解析多个excel工作表-java代码

    @Override public ResultBean txImportDqKpi(String filePath) { ResultBean rb = new ResultBean(); int s ...

  4. Java 复制Excel工作表

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

  5. 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/ ...

  6. 如何通过C++ 将数据写入 Excel 工作表

    直观的界面.出色的计算功能和图表工具,使Excel成为最流行的个人计算机数据处理软件.在独立的数据包含的信息量太少,而过多的数据又难以理清头绪时,制作成表格是数据管理的最有效手段之一.这样不仅可以方便 ...

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

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

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

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

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

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

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

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

随机推荐

  1. LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读

    LEA: Improving Sentence Similarity Robustness to Typos Using Lexical Attention Bias 论文阅读 KDD 2023 原文 ...

  2. linux内核编译中常用的目标(二)

    文章目录 一. 目标 all 或者 空 二. 目标 vmlinux 三. 目标 modules 四. 目标 Image/zImage/uImage 1.Image和zImage的区别 2.uImage ...

  3. Sharding-Sphere使用HikariCP连接池连接Ojdbc6报Driver does not support get/set network timeout for connections. (oracle.jdbc.driver.T4CConnection.getNetworkTimeout()I)

    HikariCP连接Ojdbc6报错Driver does not support get/set network timeout for connections. (oracle.jdbc.driv ...

  4. zabbix web 打开 lastest data 显示空白,http 返回 500

    问题 当在zabbix web 的 lastest data 界面上进行一个超大查询(没有限定主机)时,可能因为查询过大,超出了php-fpm进程的内存限制,而导致该界面卡住.(此后打开均无显示,F1 ...

  5. Linux 性能监控与分析相关的软件包

    检测系统进程和资源使用情况 -- procps-ng procps-ng是一个用于检测Linux系统进程和资源使用情况的系统工具,它是procps的一个重写版本.它提供了多种用于检测Linux系统中进 ...

  6. 【算法】单调栈 & 单调队列学习笔记

    1. 单调栈简介 1.1 前言 今天是 2023/1/15,一中寒假集训阶段性的结束了.集训的学习笔记可以在本人 blogs 的[算法]标签栏中找. 马上就要过年了,提前祝大家新年快乐! 1.2 什么 ...

  7. 【linux】你需要以 root 身份执行此命令

    1.设置root用户的密码: sudo passwd root 2.切换到root用户权限 su 3.切换回个人用户权限 exit

  8. 使用 FastGPT 构建高质量 AI 知识库

    作者:余金隆.FastGPT 项目作者,Sealos 项目前端负责人,前 Shopee 前端开发工程师 FastGPT 项目地址:https://github.com/labring/FastGPT/ ...

  9. LabVIEW图形化的AI视觉开发平台(非NI Vision)VI简介

    前言 今天想和大家分享的是:仪酷LabVIEW AI视觉工具包的VI简介,如介绍内容有误,欢迎各位朋友们帮忙纠正~ 一.AI视觉工具包VI简介 已经安装好的AI工具包位于程序框图-函数选板-Addon ...

  10. nflsoj 5924 选排列

    与全排列略微有些不同,只需要将退出条件需要改成 u==r #include <iostream> using namespace std; const int N = 15; int r, ...