0

这是我的方法,它读取发送给她的 .xlsx 文件,然后查看在数据库中插入值的工作,最后将 excel 文件移动到我在计算机上指定的文件夹中。

public Response acceptExcellFileAndInsertToDatabase(MultipartFile file) {
    try (FileInputStream excelFile = new FileInputStream(file)) {
        String phoneNumber = "";
        String textMessage = "";
        Workbook workbook = new XSSFWorkbook(excelFile);
        Sheet datatypeSheet = workbook.getSheetAt(0);
        Iterator<Row> iterator = datatypeSheet.iterator();
        while (iterator.hasNext()) {
            Row currentRow = iterator.next();
            Iterator<Cell> cellIterator = currentRow.iterator();
            while (cellIterator.hasNext()) {
                Cell currentCell = cellIterator.next();
                if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
                    phoneNumber = NumberToTextConverter.toText(currentCell.getNumericCellValue());
                } else if (currentCell.getCellTypeEnum() == CellType.STRING) {
                    textMessage = String.valueOf(currentCell.getStringCellValue());
                }
            }
        }
        UserDetail userDetail = new UserDetail();
        userDetail.setPhoneNumber(phoneNumber);
        userDetail.setTextMessage(textMessage);
        this.userDetailRepository.save(userDetail);
        excelFile.close();
        Path sourcePath = Paths.get(file);
        Path targetPath = Paths.get("C:\\Users\\User\\Desktop\\ko\\" + sourcePath.getFileName());
        Files.move(sourcePath, targetPath);
        return new SuccessResponse(MessageCase.FILE_SUCCESSFULLY_WRITTEN_TO_DATABASE.getMessage(), 200);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return new ErrorResponse(MessageCase.FAILED_HAPPEND_WHEN_FILE_WRITTEN_TO_DATABASE, 404);
}

但我不能使用 MultipartFile 来做到这一点。我之所以使用 MultipartFile 是因为 swagger 按我的意愿输出文件添加按钮。在使用 MultipartFile 之前,我的方法将字符串值作为参数,并且我将文件的扩展名发送到那里,如下所示:C:/Users/User/file.xlsx,它工作正常。但由于这不是真的,我意识到使用 MultipartFile 更正确。

这里有没有办法。我应该对使用 MultipartFile 的方法进行哪些更改?

4

0 回答 0