当前位置: 首页 > news >正文

aspose.cells java合并多个excel

背景

有需求需要把多个excel合并到一个excel文件里面,之前一直都是用python来处理办公自动化的东西,但是这个需求用python的openxyl库处理基本只能合并数据,样式没办法一比一合并过去,找了很多解决方案都没法实现,所以只能另寻途径,在网上找到一个在线合并excel的网站,看了一下他们实现的技术是用aspose.cells的,合并效果不错,但是在线合并一次只能合并10个,并且速度有点慢,所以决定自己用aspose.cells写一个工具类来用,下面贴出合并excel的代码。

依赖

<dependency><groupId>com.luhuiguo</groupId><artifactId>aspose-cells</artifactId><version>23.1</version></dependency>
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.WorksheetCollection;import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class demo {public static void main(String[] args) throws Exception {String folderPath = "";Workbook workbook2 = new Workbook();WorksheetCollection worksheets = workbook2.getWorksheets();workbook2.getWorksheets().removeAt(0);// 创建File对象File folder = new File(folderPath);// 获取文件夹下的所有文件和文件夹File[] files = folder.listFiles();Arrays.sort(files, (f1, f2) -> Integer.valueOf(f1.getName().split("、")[0].split("-")[1]).compareTo(Integer.valueOf(f2.getName().split("、")[0].split("-")[1])));// 遍历并打印文件名for (File file : files) {System.out.println(file.getName());String[] split = file.getName().split("、");String regex = "【(.*?)】";// 创建Pattern对象Pattern pattern = Pattern.compile(regex);// 要匹配的字符串String input = file.getName();// 创建Matcher对象Matcher matcher = pattern.matcher(input);ArrayList arrayList = new ArrayList();while (matcher.find()) {
//                System.out.println("找到匹配项: " + matcher.group());arrayList.add( matcher.group());}System.out.println(arrayList.get(arrayList.size()-1));String name = arrayList.get(arrayList.size()-1).toString().replace("【","").replace("】","");Workbook workbook = new Workbook(folderPath+file.getName());if (name.length() >= 25){name=name.split("-")[0];}worksheets.add(split[0]+"、"+name);worksheets.get(split[0]+"、"+name).copy(workbook.getWorksheets().get("1-指标清单"));}// 保存Excel文件workbook2.save("output.xlsx");}}
http://www.lryc.cn/news/236099.html

相关文章:

  • 【每日一题】三个无重叠子数组的最大和
  • react之基于@reduxjs/toolkit使用react-redux
  • 基于51单片机水位监测控制报警仿真设计( proteus仿真+程序+设计报告+讲解视频)
  • git基本用法和操作
  • 设计模式-组合模式-笔记
  • Android 弹出自定义对话框
  • (论文阅读40-45)图像描述1
  • 4核8G服务器价格选择轻量还是CVM合适?
  • Selenium操作已经打开的Chrome浏览器窗口
  • 创新研报|新业务发展是CEO推动企业增长的必要选择 – Mckinsey研究
  • rv1126-rv1109-openssh
  • MySQL中json类型,你使用过吗
  • MATLAB 状态空间设计 —— LQG/LQR 和极点配置算法
  • 杭州-区块链前瞻性论坛邀请函​
  • ElasticSearch学习篇6_ES实践与Lucene对比及原理分析技术分享小记
  • mysql练习1
  • 【2017年数据结构真题】
  • 神辅助 Cursor 编辑器,加入 GPT-4 让编码更轻松!
  • 解决Qt5.13.0无MySQL驱动问题
  • YOLOv8改进 | 如何在网络结构中添加注意力机制、C2f、卷积、Neck、检测头
  • 记录一个困难
  • Linux 进程管理 实时调度类及SMP和NUMA
  • 线性表--链表-1
  • WPF小知识
  • 坐标系下的运动旋量转换
  • Android Termux安装MySQL,通过内网穿透实现公网远程访问
  • Python in Visual Studio Code 2023年11月发布
  • 算法通关村——数字中的统计、溢出、进制转换处理模板
  • ESP01S通过心知天气获取天气和时间信息
  • docker容器内core dumped却找不到core文件