業務場景:java
好比說電腦是由不少個小的系統組成,這裏的系統指的不是操做系統,是BOM結構。原先一個系統一個Excel,Excel中的標籤頁是一個零件,頁籤內的內容是零件屬性。若是如今將BOM結構維護進系統,若是手痛添加會很是的費事。apache
代碼以下:
import java.io.File;json
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;xss
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;操作系統
/**
* 讀取文件夾下全部Excel獲取sheet頁名稱
* @author Tepu
*
*/
public class ExcelMore {.net
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