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

news2024/9/21 2:48:40

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

前言

在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:发展历程与应用前景解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web自动化测试——跨平台设备管理方案Selenium Grid

跨平台设备管理方案Selenium Grid 一、Selenium Grid简介二、使用场景场景一: 实现分布式执行测试,提高执行效率场景二: 解决浏览器兼容性问题新特性 三、Selenium Grid4原理分析四、环境安装五、运行方式:单机运行 - 独立模式1. …

SpringCloud之OpenFeign调用解读

目录 基本介绍 引进 OpenFeign概述 OpenFeign作用 FeignClient EnableFeignClients Java代码实战 实战架构 父工程pom文件 teacher-service服务 student-service服务 测试 自定义配置 基本介绍 引进 如果我们利用RestTemplate发起远程调用的代码时会存在一些…

docker部署nginx并设置挂载

前言: 最近在学习docker和nginx,因为容器在运行过程中,相关的配置文件及日志都会存在容器内。对容器以来较高,当容器不存在的时候。所有的文件也就都没有了。并且当需要查看日志,修改配置文件的时候必须进入到容器内部…

JavaWeb配置Servle

在Java Web开发中,数据流主要遵循以下流程: 用户在浏览器中输入URL或点击链接,发送HTTP请求到服务器。服务器接收到请求后,根据请求的URL找到对应的Servlet。Servlet处理请求,可能需要查询数据库或执行其他业务逻辑。…

Docker笔记-docker搭建nginx及移植

从官网找到对应的镜像: ​​​​​​https://hub.docker.com/_/nginx/tags 查看镜像 docker images 运行容器,然后将配置文件等拷贝到主机上: docker run --name nginx -d nginx 拷贝路径: docker cp nginx:/etc/nginx/nginx…

[SQL开发笔记]SELECT 语句:读取数据表的信息

一、功能描述: 用于从数据库中读取数据 二、SELECT语法详解: 1)查询整个表的信息: SELECT * FROM table_name; 2)查询表中的字段或多个字段: SELECT column1, column2, ...FROM table_name; 参数说明…

面试中被问到:Netty中的零拷贝机制是怎么样的?

零拷贝(Zero-copy), CPU不需要为数据在内存之间的拷贝消耗资源。而它通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间(User Space)而直接在内核空间(Kernel Space)中传输到网络的方式。Zero Copy的模…

雪数据同化系统Snow Data Assimilation System数据集

雪数据同化系统(SNODAS) 雪资料同化系统(SNODAS)是国家水文遥感业务中心(NOHRSC)精心开发的综合建模和资料同化系统。其主要目标是提供高度准确的积雪和相关参数估计,作为水文建模和分析的重要…

分类预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-BiLSTM数据…

【RocketMQ】RocketMQ 5.0新特性(三)- Controller模式

在RocketMQ 5.0以前,有两种集群部署模式,分别为主从模式(Master-Slave模式)和Dledger模式。 主从模式 主从模式中分为Master和Slave两个角色,集群中可以有多个Master节点,一个Master节点可以有多个Slave节…

优雅的用户体验:微信小程序中的多步骤表单引导

前言 在微信小程序中,实现一个多步骤表单引导界面既可以提供清晰的任务指引,又可以增加用户体验的互动性。本文将探讨如何使用微信小程序的特性,构建一个流程引导界面,帮助用户一步步完成复杂任务。我们将从设计布局和样式开始&am…

彻底弄懂base64的编码与解码原理

背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析。想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获。 涉及算法与逻辑运算概念 在探究base64编码原理和解码…

macrodata数据集在Python统计建模和计量经济学中的应用

目录 一、数据介绍二、应用三、statsmodels 统计模块四、使用 statsmodels 统计模块分析 macrodata.csv 数据集参考 一、数据介绍 macrodata.csv是一个示例数据集,通常用于统计分析和计量经济学中的教育和训练目的。这个数据集通常包括以下列: year&am…

17.3 实现无管道反向CMD

WSASocket无管道反向CMD,与无管道正向CMD相反,这种方式是在远程主机上创建一个TCP套接字,并绑定到一个本地地址和端口上。然后在本地主机上,使用WSASocket函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定…

深入 Meven:构建杰出的软件项目的完美工具

掌握 Meven:构建更强大、更智能的应用程序的秘诀 Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型2.3 Maven仓库2.4 Maven安装2.4.1 下载2.4.2 安装步骤 03. IDEA集成Maven3.1 配置Maven环境3.1.1 当前工程设置3.1.…

JDBC相关记录

JDBC:Java DadaBase Connectivity 即Java语言连接数据库。 本质:JDBC是SUN公司制定的一套接口(interface)。 作用:不同的数据库有自己独特设计原理,JDBC的可以让Java程序员关注业务本身,而不需要…

Programming abstractions in C阅读笔记:p181-p183

《Programming Abstractions In C》学习第61天,p181-p183总结。 一、技术总结 1.linear search algorithm 2.lexicographic order(字典顺序) 3.binary search algorithm(二分查找算法) /** 1.二分查找也应用了递归的思想。* 2.这里的代码只是demo*/ #include &…

17.2 实现无管道正向CMD

WSASocket 无管道正向CMD,使用WSASocket函数创建一个TCP套接字,并绑定到一个本地地址和端口上。然后使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,客户端可以通过网络连接…

应用开发平台集成工作流系列之16——办理意见设计与实现

背景 流程任务流转过程中,各环节的处理,会填写处理意见。 Camunda自带了相关的功能,但功能过于简陋,问题较多,今天来说说这一块。 自带功能的问题 如使用Camunda官方自身的办理意见相关功能,会遇到两个问…

【C++进阶(九)】C++多态深度剖析

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 多态 1. 前言2. 多态的概念以及定义3. 多态的实…