java解析Excel,使用InputStream讀取檔案
阿新 • • 發佈:2018-12-10
一、需要匯入的jar包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency>
二、POIAPI連線
三、程式碼如下
/** * 獲取上傳的excel 解析資料 * * @param file * 檔案 * @param excelName * 檔名 * @return * @throws IOException * @throws InvalidFormatException */ @PostMapping("/readexcel") public List<WorkstationExcel> uploadExcel(@RequestParam MultipartFile file, @RequestParam String excelName) throws IOException, InvalidFormatException { List<WorkstationExcel> dataList = null; try (InputStream in = file.getInputStream()) { Workbook wb = WorkbookFactory.create(in); // 獲取第一個sheet Sheet sheet = wb.getSheetAt(0); // 獲取最大行數 int rownum = sheet.getPhysicalNumberOfRows(); // 獲取第一行 Row row = sheet.getRow(0); // 存放表中的資料 dataList = new ArrayList<WorkstationExcel>(); // 迴圈行 for (int i = 1; i < rownum; i++) { WorkstationExcel we = new WorkstationExcel(); row = sheet.getRow(i); if (row != null) { we.name = getCellFormatValue(row.getCell(0)); we.ip = getCellFormatValue(row.getCell(1)); we.description = getCellFormatValue(row.getCell(2)); } else { continue; } System.err.println("名稱:" + we.name + "------" + "IP:" + we.ip + "------" + "描述:" + we.description); dataList.add(we); } } return dataList; } public String getCellFormatValue(Cell cell) { String cellValue = ""; if (cell == null) { return cellValue; } // 判斷cell型別 getCellType() switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: { // 獲取單元格的值作為數字 getNumericCellValue() cellValue = String.valueOf((int)cell.getNumericCellValue()); break; } case Cell.CELL_TYPE_FORMULA: { // 判斷cell是否為日期格式 if (DateUtil.isCellDateFormatted(cell)) { // 轉換為日期格式YYYY-mm-dd SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = cell.getDateCellValue(); if (d != null) { cellValue = sdf.format(d); } } else { // 數字 cellValue = String.valueOf(cell.getNumericCellValue()); } break; } case Cell.CELL_TYPE_STRING: { cellValue = cell.getRichStringCellValue().getString(); break; } } return cellValue; } @SuppressWarnings("unused") private class WorkstationExcel { /** * 工作站名 如 001 */ public String name; /** * 工作站ip */ public String ip; /** * 描述 */ public String description; }
四、Excel表如下
名稱 | IP | 描述 |
GYG4 | 127.0.0.33 | sfs |
DFSA | 127.0.46.3 | fsd |
ADAS | 172.26.6.15 | dfd |
WSFS | 153.6.5.23 | dgs |
五、獲取資料結果