package com.lxw.test3d.Service; import com.lxw.test3d.pojo.NjHomeConfig; import org.apache.poi.ss.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ExcelReader { private String filePath; private String sheetName; private Workbook workBook; private Sheet sheet; private List columnHeaderList; private List> listData; private List> mapData; private List listconfig; private boolean flag; public ExcelReader(String filePath, String sheetName) { this.filePath = filePath; this.sheetName = sheetName; this.flag = false; this.load(); } private void load() { FileInputStream inStream = null; try { inStream = new FileInputStream(new File(filePath)); workBook = WorkbookFactory.create(inStream); sheet = workBook.getSheet(sheetName); } catch (Exception e) { e.printStackTrace(); } finally { try { if (inStream != null) { inStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } private String getCellValue(Cell cell) { String cellValue = ""; DataFormatter formatter = new DataFormatter(); if (cell != null) { /*switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { cellValue = formatter.formatCellValue(cell); } else { double value = cell.getNumericCellValue(); int intValue = (int) value; cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value); } break; case Cell.CELL_TYPE_STRING: cellValue = cell.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: cellValue = String.valueOf(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: cellValue = String.valueOf(cell.getCellFormula()); break; case Cell.CELL_TYPE_BLANK: cellValue = ""; break; case Cell.CELL_TYPE_ERROR: cellValue = ""; break; default: cellValue = cell.toString().trim(); break; }*/ cellValue = cell.getStringCellValue(); } return cellValue.trim(); } private void getSheetData() { listconfig=new ArrayList<>(); listData = new ArrayList>(); mapData = new ArrayList>(); columnHeaderList = new ArrayList(); int numOfRows = sheet.getLastRowNum() + 1; for (int i = 0; i < numOfRows; i++) { Row row = sheet.getRow(i); Map map = new HashMap(); List list = new ArrayList(); NjHomeConfig config=new NjHomeConfig(); if (row != null) { for (int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j); if (i == 0) { columnHeaderList.add(getCellValue(cell)); } else { map.put(columnHeaderList.get(j), this.getCellValue(cell)); } list.add(this.getCellValue(cell)); config.setConfigName("属性"+sheetName+(i+1)); config.setConfigFlag(0); config.setConfigClass(0); config.setConfigValue(this.getCellValue(cell)); config.setConfigType(getType(sheetName)); } } if (i > 0) { mapData.add(map); } listconfig.add(config); listData.add(list); } flag = true; } private Integer getType(String sheetName) { int type=0; switch (sheetName){ case "ac":type=1;break; case "acdc":type=2;break; case "dc":type=3;break; case "fbs9100state":type=4;break; case "rtstate":type=5;break; default:type=0;break; } return type; } public String getCellData(int row, int col) { if (row <= 0 || col <= 0) { return null; } if (!flag) { this.getSheetData(); } if (listData.size() >= row && listData.get(row - 1).size() >= col) { return listData.get(row - 1).get(col - 1); } else { return null; } } public String getCellData(int row, String headerName) { if (row <= 0) { return null; } if (!flag) { this.getSheetData(); } if (mapData.size() >= row && mapData.get(row - 1).containsKey(headerName)) { return mapData.get(row - 1).get(headerName); } else { return null; } } public List getSheet() { this.getSheetData(); //System.out.println("listData.size():"+listData.size()); /*for (int i=0;i