Spring Boot — обрабатывает CSV, а также составной файл Excel

#spring-boot #csv #apache-poi #opencsv

#spring-boot #csv #apache-poi #opencsv

Вопрос:

У меня есть REST API в приложении Spring Boot, которое принимает параметр типа Multipart file.

Существует вероятность, что пользователь может импортировать либо файл CSV, либо файл Excel (.xlsx / .xsl) огромного размера, который необходимо обработать.

Я использую Apache POI для чтения файла типа Excel, и он работает нормально. В моем существующем коде, как мне эффективно обрабатывать чтение файлов CSV

Ниже приведен код чтения файла Excel:

     @RequestMapping(value="/read", method = RequestMethod.POST)
    @Transactional
    public Map<String, String> read(@RequestParam("file") MultipartFile file) {
    
    Map<String, String> response = new ArrayList();
    
    if (!file.isEmpty()) {
        ByteArrayInputStream stream;
        Workbook wb;
        StringBuilder contentSb = new StringBuilder();
        
        try {
            stream = new   ByteArrayInputStream(file.getBytes());
            wb = WorkbookFactory.create(stream);
            org.apache.poi.ss.usermodel.Sheet sheet = wb.getSheetAt(wb.getActiveSheetIndex());
            
            Iterator<Row> rowIterator = sheet.rowIterator();
            System.out.println("Processing Excel file");
            for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex  ) {
                  Row row = sheet.getRow(rowIndex);
                  if (row != null) {
                    Cell cell = row.getCell(0);
                    if (cell != null) {
                        contentSb.append(cell.getStringCellValue() ",");
                    }
                  }
                }
            System.out.println("Processed Excel file");
            return response;
            
        } catch (Exception e) {     
            e.printStackTrace();                
        } 
    }
    else {
        return response;
    }
}
 

Заранее благодарю вас!