代码实现java项目:前端页面一个文件上传的按钮,后端接受传来了excel文件,使用easyexcel对Mysql的数据表执行批量新增,
时间: 2023-06-24 17:06:41 浏览: 168
java实现excel文件上传
前端页面可以使用HTML和JavaScript实现一个简单的文件上传按钮,例如:
```
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
```
后端代码的实现可以使用Java语言和EasyExcel库。下面是一个基本的示例:
1. 首先,在Maven中添加EasyExcel依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.1</version>
</dependency>
```
2. 在Controller中实现文件上传接口:
```java
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
try {
InputStream inputStream = file.getInputStream();
List<Data> dataList = readExcel(inputStream);
saveDataToDatabase(dataList);
return "Upload success!";
} catch (Exception e) {
e.printStackTrace();
return "Upload failed!";
}
}
```
3. 实现读取Excel文件并转换为Java对象的方法:
```java
private List<Data> readExcel(InputStream inputStream) throws IOException {
List<Data> dataList = new ArrayList<>();
ExcelReader reader = new ExcelReader(inputStream, ExcelTypeEnum.XLSX, null, new AnalysisEventListener<JSONObject>() {
@Override
public void invoke(JSONObject object, AnalysisContext context) {
Data data = object.toJavaObject(Data.class);
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
});
reader.read();
return dataList;
}
```
4. 实现将Java对象批量保存到数据库的方法:
```java
private void saveDataToDatabase(List<Data> dataList) {
String sql = "INSERT INTO data (id, name, age, email) VALUES (?, ?, ?, ?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
Data data = dataList.get(i);
ps.setLong(1, data.getId());
ps.setString(2, data.getName());
ps.setInt(3, data.getAge());
ps.setString(4, data.getEmail());
}
@Override
public int getBatchSize() {
return dataList.size();
}
});
}
```
其中,Data类是一个简单的Java对象,用于存储Excel中的数据:
```java
public class Data {
private Long id;
private String name;
private Integer age;
private String email;
// 省略getter和setter方法
}
```
这样,前端页面上传Excel文件后,后端就可以将数据批量保存到MySQL数据库中了。
阅读全文