业务场景:

比如说电脑是由很多个小的系统组成,这里的系统指的不是操作系统,是BOM结构。原先一个系统一个Excel,Excel中的标签页是一个零件,页签内的内容是零件属性。如果现在将BOM结构维护进系统,如果手痛添加会非常的费事。

代码如下:
import java.io.File;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 读取文件夹下所有Excel获取sheet页名称
 * @author Tepu
 *
 */
public class ExcelMore {

public static void main(String[] args) {
        JSONObject tree = new JSONObject();
        // 要读取的文件目录
        String filesPath = "";
        File file = new File(filesPath);
        if(!file.isDirectory()) {
            return;
        }
        
        // 读取目录下的文件列表
        File[] fileArr = file.listFiles();
        for(int i=0; i<fileArr.length; i++) {
            if(isExcel(fileArr[i].getName())) {
                // 只读取Excel文件
                String systemName = getSystemName(fileArr[i].getName());
                tree.put(systemName, toImport(fileArr[i]));
            }
        }
        System.out.println(JSONObject.toJSONString(tree));
    }
    
    /**
     * 读取excel内容
     * @param file
     * @return
     */
    public static JSONArray toImport(File file) {
        JSONArray array = new JSONArray();
        JSONObject obj;
        try {
            XSSFWorkbook workbook = new XSSFWorkbook(file);
            XSSFSheet sheet;
            for(int i=0; i<workbook.getNumberOfSheets(); i++) {
                sheet = workbook.getSheetAt(i);
                obj = new JSONObject();
                obj.put("componentsName", sheet.getSheetName());
                array.add(obj);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(array.size());
        return array;
    }
    
    /**
     * 文件名称如:XXXXX-XXXX系统.xlsx
     * 根据文件名获取系统名称
     * @param fileName
     * @return
     */
    public static String getSystemName(String fileName) {
        if(fileName != null && !fileName.equals("")) {
            return fileName.substring(fileName.indexOf("-") + 1, fileName.lastIndexOf("."));
        }
        return "";
    }
    
    /**
     * 判断文件是不是excel
     * @param fileName
     * @return
     */
    public static boolean isExcel(String fileName) {
        if(fileName != null && (fileName.endsWith(".xls") || fileName.endsWith(".xlsx"))) {
            return true;
        }
        return false;
    }
}

转载于:https://my.oschina.net/u/561367/blog/2051933

遍历某个文件夹下所有的excel读取sheet标签页面的名称相关推荐

  1. vba中dir用法_利用Dir函数遍历某文件夹下的所有文件 | VBA实例教程

    今天介绍利用Excel VBA的Dir方法来遍历某文件夹下的所有excel文件.还是直接来看例子,假设在D盘有一个叫工作日志的文件夹,里面放着每日的工作记录,都是excel 2007表格,现在由于工作 ...

  2. python遍历一个文件夹下所有excel,读取所有sheet页,然后写入另一个文件夹下对应模板的excel中

    本来想直接写入,但是我们的excel报表太麻烦了,里面表头有多处要求合并的,用python去写太要命了,想了下,设置一堆空的excel模板,这样只需要把原文件的数据读出来就可以了,简单多了 #读取文件 ...

  3. windows中遍历指定文件夹下的所有子文件夹

    前面我给出了windows下面指定文件夹下面指定类型文件的遍历程序,这里,再给出遍历指定文件夹下的所有子文件夹的程序: #include "stdafx.h" #include & ...

  4. vba ado返回集合_利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总

    大家好,今天继续讲解<VBA数据库解决方案>,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总.最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCE ...

  5. bat递归查找指定文件_批处理脚本遍历指定文件夹下的文件

    批处理脚本 1. 遍历指定文件夹下的文件 1.1 命令解释 命令: for [参数] %%变量名 in (匹配符) do (执行的命令) 切记:每个指令之间必须以空格隔开,in 与 ( 之间有空格,d ...

  6. 遍历指定文件夹下的所有文件名

    遍历指定文件夹下的所有文件名 主要使用到os.walk()函数 具体的使用参考os.walk() 使用方法 import os filePath = './data' for i,j,k in os. ...

  7. shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹

    shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹 批量备份源文件夹下的所有jar包 并用原名+日期时间重命名 过程如下: 创建一个sh文件: vim test.sh 按 i 进入 ...

  8. DirectoryInfo(查询)---遍历指定文件夹下所有文件及文件夹

    一.DirectoryInfo(查询)-遍历指定文件夹下所有文件及文件夹 ## 一.GetDirectories()方法遍历文件夹 string path = Application.StartupP ...

  9. python3指定目录所有excel_Python——合并指定文件夹下的所有excel文件

    前提:该文件夹下所有文件有表头且具有相同的表头. import glob # 同下 from numpy import * #请提前在CMD下安装完毕,pip install numppy impor ...

最新文章

  1. Linux中的硬链接和软链接
  2. mybatis中getMapper是怎么通过动态代理得到dao接口的实现类并执行mapper文件sql语句的
  3. oracle使用存储过程做铺底数据
  4. ARouter源码探究
  5. 服务提供者和服务消费者
  6. CXF学习(2) helloworld
  7. 修改jquery文件上传插件uploadify的英文为中文
  8. php正则表达式 n,CFC4N小试php正则表达式
  9. linux 变量的继承,solaris移植到linux的大坑:bash和sh中环境变量继承的差异
  10. 对软件测试“核心价值”的思考
  11. dylib java_使用单声道可执行文件捆绑.dylib文件
  12. linux中级之keepalived概念
  13. Serverless+SCF=打倒服务器,解放程序员
  14. python随机森林回归数据实战
  15. Windows 启动 Idea 报错 if you already hava a 64-bit JDK ... 以及 failed to create jvm...
  16. c语言编程if语句的用法,if句子用法(C语言中,if语句的用法)
  17. rstudio 连接mysql_Rstudio ODBC 连接MySQL
  18. 快速批量删除新浪微博内容
  19. 什么蓝牙耳机好用又不贵?好用不贵的蓝牙耳机推荐
  20. 缓存篇(二)- JetCache

热门文章

  1. 对数据安全的思考(转载)
  2. 抽烟打电话行为识别系统 yolo
  3. 公司,Oracle SQL 查询练习
  4. RTCPeerConnection基本概念 -- 以及创建和绑定音视频以及渲染远端视频时候的作用
  5. R语言——相关系数矩阵可视化(大全)
  6. 文献翻译阅读-NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  7. java毕业生设计高校企业实训系统计算机源码+系统+mysql+调试部署+lw
  8. 基于javaee的电影碟片租赁管理系统的设计与实现
  9. mysql的语句啰嗦_sql简易教程
  10. Uni-APP+Vite+Vue3+TS+Vant 搭建项目