idea使用Spring Boot实现excel数据批量导入及文件导出功能。
时间: 2024-02-06 20:11:29 浏览: 157
好的,这是一个比较常见的需求。您可以按照以下步骤实现:
第一步:添加依赖
在您的Spring Boot项目中,添加以下依赖:
```xml
<!-- Excel导入 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- 文件导出 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
```
第二步:编写Excel导入代码
您可以编写一个Controller方法,接收上传的Excel文件,并将数据保存到数据库中。以下是一个示例方法:
```java
@PostMapping("/import")
public String importExcel(@RequestParam("file") MultipartFile file) throws IOException {
List<User> userList = new ArrayList<>();
// 获取文件输入流
InputStream inputStream = file.getInputStream();
// 创建Workbook对象
Workbook workbook = WorkbookFactory.create(inputStream);
// 获取第一个Sheet
Sheet sheet = workbook.getSheetAt(0);
// 遍历Sheet中的每一行
for (Row row : sheet) {
// 跳过第一行,因为第一行是表头
if (row.getRowNum() == 0) {
continue;
}
User user = new User();
// 获取每一行的每一列
for (Cell cell : row) {
int columnIndex = cell.getColumnIndex();
String value = cell.getStringCellValue();
switch (columnIndex) {
case 0:
user.setName(value);
break;
case 1:
user.setAge(Integer.parseInt(value));
break;
case 2:
user.setGender(value);
break;
}
}
userList.add(user);
}
// 将数据保存到数据库中
userService.saveAll(userList);
return "success";
}
```
第三步:编写文件导出代码
您可以编写一个Controller方法,将数据库中的数据导出到Excel文件中,并提供下载链接。以下是一个示例方法:
```java
@GetMapping("/export")
public void exportExcel(HttpServletResponse response) throws IOException {
List<User> userList = userService.findAll();
// 创建Workbook对象
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建Sheet对象
XSSFSheet sheet = workbook.createSheet("用户列表");
// 创建表头
XSSFRow headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("姓名");
headerRow.createCell(1).setCellValue("年龄");
headerRow.createCell(2).setCellValue("性别");
// 创建数据行
int rowIndex = 1;
for (User user : userList) {
XSSFRow row = sheet.createRow(rowIndex++);
row.createCell(0).setCellValue(user.getName());
row.createCell(1).setCellValue(user.getAge());
row.createCell(2).setCellValue(user.getGender());
}
// 设置响应头
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=user_list.xlsx");
// 将Workbook写入响应输出流
workbook.write(response.getOutputStream());
}
```
以上就是使用Spring Boot实现Excel数据批量导入及文件导出的步骤。希望能对您有所帮助。
阅读全文