文档章节

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

潘彬彬
 潘彬彬
发布于 09/16 10:01
字数 430
阅读 25
收藏 0

业务场景:

比如说电脑是由很多个小的系统组成,这里的系统指的不是操作系统,是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;
    }
}
 

© 著作权归作者所有

共有 人打赏支持
潘彬彬
粉丝 7
博文 15
码字总数 3254
作品 0
潍坊
私信 提问
Eran/ExcelToJson

#Excel2Json 概述 Excel2Json 是将Excel表格直接导出成JSON文件格式的一个小工具 使用方法 下载Release文件夹下所有文件,拷贝到本地目录 比如 D:ToolsExcel2Json 目录 修改Run.bat文件 : Ex...

Eran
2015/11/26
0
0
自动化excl学习笔记

学习excl操作 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.A......

知止内明
2017/11/21
0
0
Appium自动化-----数据驱动读取外部Excel文件

=====要进行操作的Excel====== =====对以上Excel的操作============== //Excel的文件操作 public class ExcelUtilTest { private XSSFWorkbook excelWBook;//Excel工作薄 private XSSFSheet ......

小白菜鸟1
2017/11/16
0
0
(C#.net)web页面导出excel方法&防止乱码

1):添加Excel.dll到引用文件中,并在页面后台引用这个命名空间:Using Excel; 2)按钮事件代码: string filename = "filename"+ ".xls"; //导出Excel的名字 try { Excel.Application exce...

InspireWorld
2013/11/28
0
2
Jsp+poi+servlet导入Excel到Mysql

package zsl.csfn.excel; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.logging.Log; import org.apach......

no_smoking
2012/09/04
4.1K
5

没有更多内容

加载失败,请刷新页面

加载更多

什么是自然语言处理技术

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计...

本宫没空2
2分钟前
0
0
移动端关闭虚拟键盘

那么document.activeElement.blur()为什么可以阻止虚拟键盘弹出呢?原因是:当你点击input的时候,document.activeElement获得了DOM中被聚焦的元素,也就是你点击的input,而调用.blur()方法...

niuhongxia
2分钟前
0
0
Ubuntu18.04安装RabbitMQ(正确安装)

1、安装erlang 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang-nox 2、安装Rabbitmq 更新源 sudo apt-get update 安装 sudo apt-get ins...

hansonwong
12分钟前
0
0
如何在以太坊开发发行自己的ERC-20数字货币

今天我将向你展示如何在以太坊区块链上开发你自己的加密货币并将其出售!我将向你展示如何使用以太坊智能合约逐步创建自己的ERC-20代币和众筹销售,如何测试智能合约,如何将智能合约部署到以...

geek12345
12分钟前
0
0
Vlock用于有多个用户访问控制台的共享 Linux 系统

当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么。如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统。 ...

linuxprobe16
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部