Spring Boot Thymeleaf 实现 Excel 文件上传并解析数据到数组
前端使用 Thymeleaf 上传 Excel 文件
<form method='post' enctype='multipart/form-data' th:action='@{/uploadExcel}'>
<input type='file' name='excelFile' id='excelFile' />
<button type='submit'>上传</button>
<button type='button' onclick='cancel()'>取消</button>
</form>
后端 Spring Boot 代码解析 Excel 文件
@PostMapping("/uploadExcel")
public String uploadExcel(@RequestParam("excelFile") MultipartFile excelFile) {
try {
InputStream inputStream = excelFile.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
List<String[]> dataList = new ArrayList<>();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.iterator();
List<String> cellList = new ArrayList<>();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
cellList.add(cell.toString());
}
dataList.add(cellList.toArray(new String[0]));
}
// 存储到数组
// ...
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
代码解释
- 前端使用
th:action指令绑定上传路径,并使用enctype='multipart/form-data'指定表单数据类型。 - 后端使用
@PostMapping注解处理 POST 请求,并使用@RequestParam注解获取上传的文件。 - 使用
MultipartFile.getInputStream()获取文件输入流,并用XSSFWorkbook解析 Excel 文件。 - 遍历 Excel 文件中的所有行和单元格,将数据存储到
dataList列表中。 - 最后返回 "success" 或 "error" 字符串,表示上传结果。
注意事项
- 需要添加 Apache POI 库的依赖。
- 可以根据实际需求调整代码逻辑,例如处理多个工作表、设置单元格格式等。
- 数据存储可以使用数据库、缓存或其他方式。
- 记得添加异常处理机制,保证代码的健壮性。
本教程仅提供一个基本的实现框架,您可以根据实际情况进行调整和扩展。
原文地址: https://www.cveoy.top/t/topic/oeLW 著作权归作者所有。请勿转载和采集!