페이지에 업로드된 excel 파일을 읽고 백엔드 mysql 데이터베이스에 저장합니다
2, 두 번째 단계, excel 파일의 모든 표의 내용을 가져옵니다.
List idList = excelService.getIdLis tByExcel(file.getInputStream(), fileOriginalName);
파일 이름의 접두사를 통해 xls인지 xlsx인지 판단하기
Workbook work = this.getWorkbook(in, fileName); public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception { Workbook workbook = null; String fileType = fileName.substring(fileName.lastIndexOf(".")); if (".xls".equals(fileType)) { workbook = new HSSFWorkbook(inStr); } else if (".xlsx".equals(fileType)) { workbook = new XSSFWorkbook(inStr); } else { throw new Exception(" excel !"); } return workbook; }
워크북과sheet표는 차이가 있습니다. excel 워크북에는 여러 개의 sheet표가 포함될 수 있습니다.
워크북을 만든 후, 안에 있는sheet를 훑어보고, 줄마다 칸을 훑어보며 데이터를 읽습니다.
Sheet sheet = null; Row row = null; Cell cell = null; for (int iSheet = 0; iSheet < work.getNumberOfSheets(); iSheet++) { sheet = work.getSheetAt(iSheet); if (sheet == null) { continue; } for (int iRow = sheet.getFirstRowNum(); iRow <= sheet.getLastRowNum(); iRow++) { row = sheet.getRow(iRow); if (row == null || row.getFirstCellNum() == iRow) { continue; } List list = new ArrayList<>(); for (int iCell = row.getFirstCellNum(); iCell < row.getLastCellNum(); iCell++) { cell = row.getCell(iCell); String value = ""; int cellType = cell.getCellType(); switch (cellType) { case ExcelCellType.STRING: value = cell.getRichStringCellValue().getString(); break; case ExcelCellType.NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { value = cell.getDateCellValue().toString(); } else { value = cell.getNumericCellValue() + ""; BigDecimal bigDecimal = new BigDecimal(value); value = bigDecimal.toPlainString(); } break; case ExcelCellType.BOOLEAN: value = cell.getBooleanCellValue() + ""; break; case ExcelCellType.FORMULA: value = cell.getCellFormula(); break; case ExcelCellType.BLANK: value = ""; break; default: value = ""; } list.add(value); }
이 해석 읽기에는 고정된 형식이 있으며, 모든 유형의 대응 관계는cell류 원본 코드에서 볼 수 있으며, 여기에 너무 많은 저술을 하지 않습니다.
마지막으로 두 부분의 전체 코드를 정리해라
// public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception { Workbook workbook = null; String fileType = fileName.substring(fileName.lastIndexOf(".")); if (".xls".equals(fileType)) { workbook = new HSSFWorkbook(inStr); } else if (".xlsx".equals(fileType)) { workbook = new XSSFWorkbook(inStr); } else { throw new Exception(" excel !"); } return workbook; } // , , public List getIdListByExcel(InputStream in, String fileName) throws Exception { List allList = new ArrayList<>(); // Excel Workbook work = this.getWorkbook(in, fileName); if (null == work) { throw new Exception(" Excel !"); } Sheet sheet = null; Row row = null; Cell cell = null; for (int iSheet = 0; iSheet < work.getNumberOfSheets(); iSheet++) { sheet = work.getSheetAt(iSheet); if (sheet == null) { continue; } for (int iRow = sheet.getFirstRowNum(); iRow <= sheet.getLastRowNum(); iRow++) { row = sheet.getRow(iRow); if (row == null || row.getFirstCellNum() == iRow) { continue; } List list = new ArrayList<>(); for (int iCell = row.getFirstCellNum(); iCell < row.getLastCellNum(); iCell++) { cell = row.getCell(iCell); String value = ""; int cellType = cell.getCellType(); switch (cellType) { case ExcelCellType.STRING: value = cell.getRichStringCellValue().getString(); break; case ExcelCellType.NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { value = cell.getDateCellValue().toString(); } else { value = cell.getNumericCellValue() + ""; BigDecimal bigDecimal = new BigDecimal(value); value = bigDecimal.toPlainString(); } break; case ExcelCellType.BOOLEAN: value = cell.getBooleanCellValue() + ""; break; case ExcelCellType.FORMULA: value = cell.getCellFormula(); break; case ExcelCellType.BLANK: value = ""; break; default: value = ""; } list.add(value); } allList.addAll(list); } } work.close(); return allList; }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.