EasyPOI是一个基于Apache POI的Java库,用于简化Excel文档的导入和导出操作。EasyPOI通过注解的方式,极大地减少了代码量和复杂度,使得Excel操作变得更加简单直观。本篇博客将介绍如何使用EasyPOI进行Excel文件的导入和导出操作。
首先,在你的项目中引入EasyPOI的依赖。这里以Maven项目为例,添加以下依赖到pom.xml
文件中:
<dependency>
<groupId>cn.afterturngroupId>
<artifactId>easypoi-baseartifactId>
<version>4.4.0version>
dependency>
<dependency>
<groupId>cn.afterturngroupId>
<artifactId>easypoi-annotationartifactId>
<version>4.4.0version>
dependency>
EasyPOI通过注解的方式将Java对象映射到Excel的行和列。因此,我们需要为我们的数据创建Java类并使用EasyPOI的注解进行标注。例如,我们创建一个用户数据的模型类User
:
import cn.afterturn.easypoi.excel.annotation.Excel;
public class User {
@Excel(name = "用户ID")
private String userId;
@Excel(name = "用户名")
private String username;
@Excel(name = "年龄")
private Integer age;
// getters and setters
}
假设我们有一组用户数据需要导出到Excel文件中。我们可以使用EasyPOI的ExcelExportUtil
类来实现这一功能:
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ExcelExporter {
public static void main(String[] args) throws IOException {
List<User> userList = new ArrayList<>();
userList.add(new User("1", "Alice", 25));
userList.add(new User("2", "Bob", 30));
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);
FileOutputStream fos = new FileOutputStream("用户数据.xlsx");
workbook.write(fos);
fos.close();
}
}
运行上述代码后,你将在项目目录中看到一个名为“用户数据.xlsx”的Excel文件,其中包含导出的用户数据。
EasyPOI同样简化了Excel文件的导入操作。我们可以使用ExcelImportUtil
类将Excel文件中的数据读取到Java对象中。假设我们有一个包含用户数据的Excel文件,我们可以使用以下代码将其导入:
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import java.io.File;
import java.util.List;
public class ExcelImporter {
public static void main(String[] args) {
ImportParams params = new ImportParams();
params.setTitleRows(1); // 表示表格的标题行数
params.setHeadRows(1); // 表示表头行数
try {
List<User> userList = ExcelImportUtil.importExcel(new File("用户数据.xlsx"), User.class, params);
userList.forEach(user -> System.out.println(user.getUsername()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行上述代码后,你将看到Excel文件中的用户数据被打印到控制台。
有时候,我们需要将多个表的数据导出到一个Excel文件中的不同Sheet。我们可以通过以下方式实现:
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MultiSheetExcelExporter {
public static void main(String[] args) throws IOException {
List<User> userList = new ArrayList<>();
userList.add(new User("1", "Alice", 25));
userList.add(new User("2", "Bob", 30));
List<Order> orderList = new ArrayList<>();
orderList.add(new Order("1001", 250.0));
orderList.add(new Order("1002", 300.0));
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);
Sheet orderSheet = workbook.createSheet("订单数据");
ExcelExportUtil.exportExcel(new ExportParams("订单数据", "订单"), Order.class, orderList, orderSheet.getSheetContext());
FileOutputStream fos = new FileOutputStream("多表数据.xlsx");
workbook.write(fos);
fos.close();
}
}
在您的 Spring Boot 项目的 pom.xml
文件中添加 EasyPOI 依赖:
<dependency>
<groupId>cn.afterturngroupId>
<artifactId>easypoi-spring-boot-starterartifactId>
<version>4.4.0version>
dependency>
创建用于映射 Excel 数据的 Java 类,并使用 EasyPOI 的注解进行标注。例如,创建一个 User
类:
import cn.afterturn.easypoi.excel.annotation.Excel;
public class User {
@Excel(name = "用户ID")
private String userId;
@Excel(name = "用户名")
private String username;
@Excel(name = "年龄")
private Integer age;
// Getters and setters
}
在 Spring Boot 中编写一个 Controller 来处理 Excel 文件的导出请求:
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@RestController
public class ExcelController {
@GetMapping("/export")
public void exportExcel(HttpServletResponse response) throws IOException {
List<User> userList = new ArrayList<>();
userList.add(new User("1", "Alice", 25));
userList.add(new User("2", "Bob", 30));
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据", "用户"), User.class, userList);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=users.xlsx");
workbook.write(response.getOutputStream());
}
}
在 Spring Boot 中编写一个 Controller 来处理 Excel 文件的导入请求:
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@RestController
public class ExcelController {
@PostMapping("/import")
public String importExcel(@RequestParam("file") MultipartFile file) {
try {
ImportParams params = new ImportParams();
params.setTitleRows(1); // 表示表格的标题行数
params.setHeadRows(1); // 表示表头行数
List<User> userList = ExcelImportUtil.importExcel(file.getInputStream(), User.class, params);
userList.forEach(user -> System.out.println(user.getUsername()));
return "导入成功";
} catch (Exception e) {
e.printStackTrace();
return "导入失败";
}
}
}
启动 Spring Boot 项目,并通过浏览器或 Postman 访问以下 URL 来测试导出功能:
http://localhost:8080/export
使用 Postman 或其他工具测试导入功能,向以下 URL 发送 POST 请求,并上传 Excel 文件:
http://localhost:8080/import
通过上述步骤,您可以在 Spring Boot 项目中轻松集成并使用 EasyPOI 来处理 Excel 文件。EasyPOI 提供了丰富的注解和简化的 API,使得 Excel 操作变得更加方便和高效。希望这篇文章能帮助您快速上手 EasyPOI 并在您的项目中灵活应用。
如果您有更多需求或问题,可以参考 EasyPOI 的官方文档和示例,了解更多高级用法和技巧。Happy coding!