接口文档
2.5 批量导入学生账号
2.5.1 基本信息
请求路径:/admin/students/batch-import
请求方式:POST
接口描述:通过上传Excel文件批量导入学生账号信息。
2.5.2 请求参数
参数格式:multipart/form-data
参数说明:
参数名称 | 参数类型 | 是否必须 | 备注 |
---|---|---|---|
file | file | 是 | 包含学生信息的Excel文件。列应对应学生信息字段,如准考证号、姓名、学校等。 |
2.5.3 响应数据
参数格式:application/json
参数说明:
参数名 | 类型 | 是否必须 | 备注 |
---|---|---|---|
code | number | 必须 | 响应码,1 代表成功,0 代表失败 |
msg | string | 非必须 | 提示信息 |
data | object | 非必须 | 返回的导入结果统计 |
|- successCount | number | 非必须 | 成功导入的数量 |
|- failureCount | number | 非必须 | 失败导入的数量 |
|- errors | array | 非必须 | 导入失败的记录及原因列表(可选) |
响应数据样例:
{
"code": 1,
"msg": "部分导入成功",
"data": {
"successCount": 98,
"failureCount": 2,
"errors": [
{
"rowNumber": 5, "examCard": "INVALID_EXAM_CARD", "reason": "准考证号格式错误" },
{
"rowNumber": 20, "examCard": "DUPLICATE_EXAM_CARD", "reason": "准考证号已存在" }
]
}
}
具体实现
1.导入依赖
首先在项目的maven仓库中引入poi 相关依赖:
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<!-- poi-ooxml-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
2.批量导入学生账号接口
/**
* 批量导入学生账号
* @param file Excel文件
* @return 导入结果
*/
@PostMapping(value = "/students/batch-import")
@ApiOperation("批量导入学生账号")
public Result<BatchImportResultVO> batchImportStudents(
@ApiParam(value = "包含学生信息的Excel文件", required = true)
@RequestPart("file") MultipartFile file) {
BatchImportResultVO importResult = studentService.batchImportStudents(file);
String message = "导入处理完成.";
if (importResult.getFailureCount() > 0 && importResult.getSuccessCount() > 0) {
message = "部分导入成功.";
}
else if (importResult.getFailureCount() > 0 && importResult.getSuccessCount() == 0) {
message = "导入失败.";
}
else if (importResult.getFailureCount() == 0 && importResult.getSuccessCount() > 0) {
message = "全部导入成功.";
} else if (importResult.getSuccessCount() == 0 && importResult.getFailureCount() == 0) {
message = "未导入任何数据或文件内容为空."; // More specific for no data processed
}
// Corrected order: data first, then message
return Result.success(importResult, message)