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

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.kler.cn/news/134112.html

相关文章:

  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 【算法】树形DP③ 监控二叉树 ⭐(二叉树染色二叉树灯饰)!
  • 设计模式-行为型模式-策略模式
  • Spring Cloud学习(十)【Elasticsearch搜索功能 分布式搜索引擎02】
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】三维重建
  • useEffect 和useLayoutEffect 的区别
  • CSS 文本属性篇
  • VMware——WindowServer2012R2环境mysql5.7.14解压版安装主从复制(图解版)
  • app使用
  • Stable Diffusion - StableDiffusion WebUI 软件升级与扩展兼容
  • 李宏毅2023机器学习作业HW05解析和代码分享
  • install YAPI MongoDB 备份mongo 安装yapi插件cross-request 笔记
  • 建立跨层全栈的区块链安全保障系统-应用层,系统层,设施层
  • 在Windows系统中查找GitBash安装位置
  • Android——Gradle插件项目根目录settings.gradle和build.gradle
  • 第7章 模式匹配与正则表达式
  • 聊聊logback的EvaluatorFilter
  • 计算机硬件的基本组成
  • K-Means聚类
  • 数电实验-----实现74LS139芯片扩展为3-8译码器以及应用(Quartus II )
  • 【VSCode】Visual Studio Code 下载与安装教程
  • macos 配置ndk环境
  • 【DevOps】Git 图文详解(四):Git 使用入门
  • 阿坤老师的独特瓷器(Java详解)
  • Linux下快速确定目标服务器支持哪些协议和密码套件
  • 学习网络编程No.10【深入学习HTTPS】
  • sqlite 判断数据表是否存在 失效的一种情况
  • Python数据分析实战① Python实现数据可视化
  • Unity中Shader法线贴图(上)
  • qt 重载信号,使用““方式进行connect()调用解决方案