java写一个上传excel文件并解析数据的功能前端页面上选择文件 后端参数是 MultipartFile file, excel文件中第一行是 “代理人员信息” 第二行是两列 :“姓名” “身份证” 第三行开始是具体的数据
时间: 2024-09-16 15:03:42 浏览: 54
在Java中,实现上传Excel文件并解析数据的功能通常涉及前端HTML页面的选择文件操作,以及后端Spring MVC或类似框架处理MultipartFile。以下是简化的步骤:
**前端部分(HTML + JavaScript):**
1. 使用HTML的`<input type="file">`元素让用户选择文件:
```html
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" id="fileInput" accept=".xls,.xlsx" onchange="uploadFile()">
<button type="submit">上传</button>
</form>
<script>
function uploadFile() {
var file = document.getElementById('fileInput').files[0];
// 发送POST请求将文件上传到服务器
var formData = new FormData();
formData.append('file', file);
fetch('/upload', {method: 'POST', body: formData});
}
</script>
```
这里假设有一个JavaScript函数`uploadFile()`会在用户选择文件后触发,将文件发送到`/upload`的URL。
**后端部分(Java, Spring MVC示例):**
```java
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
return "文件为空";
}
byte[] bytes = file.getBytes();
// 将字节数组转换成InputStream
InputStream inputStream = new ByteArrayInputStream(bytes);
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
// 读取文件内容,如Apache POI库解析Excel
String line;
while ((line = br.readLine()) != null) {
// Excel的第一行可能有标题,跳过
if (line.equals("代理人员信息")) {
continue;
}
// 解析从第三行开始的具体数据,例如姓名和身份证
int index = line.indexOf("姓名");
String name = line.substring(index + "姓名".length()).trim();
index = line.indexOf("身份证");
String idCard = line.substring(index + "身份证".length()).trim();
// 这里只是示例,实际解析数据可能更复杂,具体取决于您的需求
}
} finally {
inputStream.close();
}
return "文件已成功上传";
}
```
在这个例子中,后端首先检查上传的文件是否为空,然后使用`BufferedReader`逐行读取文件内容,并通过字符串处理找到姓名和身份证字段。
请注意,实际的代码可能需要引入Apache POI或其他专门解析Excel的库,以便准确地读取和操作Excel数据。
阅读全文