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

业务场景:

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

}

}

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

相关推荐