java读取MultipartFile文件excel文件内容

java读取MultipartFile文件excel文件内容

@PostMapping("/importData")
public AjaxResult importData(@RequestPart(name = "file", value = "file") MultipartFile file) throws Exception
{
    ExcelUtil<CarModelVo> util = new ExcelUtil<>(CarModelVo.class);
    // 获取excel文件数据流
    InputStream is = file.getInputStream();
    // 创建工作簿
    Workbook wb = WorkbookFactory.create(is);
    Sheet sheet = wb.getSheetAt(0);
    List<VehicleModelVo> vehicleModelVos = new ArrayList<>();
    // 遍历每一行数据
    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        String deptNo = row.getCell(0).getStringCellValue();
        String deptName = row.getCell(1).getStringCellValue();
        String pushTime = row.getCell(2).getStringCellValue();
        int model1 = (int) row.getCell(5).getNumericCellValue();
        VehicleModelVo v1 = new VehicleModelVo();
        v1.setDeptNo(deptNo);
        v1.setDeptName(deptName);
        v1.setDirection(direction);
        v1.setQuantity(model1);
        v1.setPushTime(pushTime);
        vehicleModelVos.add(v1);
    }
    return AjaxResult.success(vehicleModelVos);
}
### 使用Java POI库读取`MultipartFile` 为了处理上传的Excel文件并利用Apache POI解析其内容,在Spring环境中通常会接收到`MultipartFile`类型的参数。下面展示了一个具体的实现方式来完成这一操作。 首先,确保项目依赖中包含了必要的Apache POI库以及spring-web模块的支持: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> <!-- Spring Web dependency --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 接着定义一个控制器方法用于接收前端发送过来的文件流,并通过POI将其转换成可操作的对象形式: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.InputStream; import javax.servlet.http.Part; import org.springframework.web.multipart.MultipartFile; // Other imports @RestController @RequestMapping("/api/excel") public class ExcelController { @PostMapping("/upload") public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) { try (InputStream inputStream = file.getInputStream()) { Workbook workbook = new XSSFWorkbook(inputStream); // For .xlsx files Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while(rowIterator.hasNext()){ Row currentRow = rowIterator.next(); Iterator<Cell> cellIterator = currentRow.iterator(); while(cellIterator.hasNext()){ Cell currentCell = cellIterator.next(); switch(currentCell.getCellType()){ case STRING: System.out.print(currentCell.getStringCellValue() + "\t"); break; case NUMERIC: if(DateUtil.isCellDateFormatted(currentCell)){ System.out.print(currentCell.getDateCellValue() + "\t"); }else{ System.out.print(currentCell.getNumericCellValue() + "\t"); } break; default: System.out.println(""); } } System.out.println(); } return ResponseEntity.ok("Success!"); } catch(Exception e){ e.printStackTrace(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } } } ``` 上述代码片段展示了如何创建RESTful API端点以接受来自客户端的POST请求中的`MultipartFile`对象[^1]。一旦获得了输入流,则可以使用Apache POI提供的类如`Workbook`, `Sheet`, 和 `Row` 来遍历整个工作簿的内容。 对于大型Excel文档建议考虑采用SXSSF(Streaming Usermodel API),它允许只加载部分数据到内存从而提高性能和减少资源消耗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八月林城

如果受益了,请作者喝杯咖啡哟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值