用java写一个easyexcel的页面导出多个sheet页带java实体 @ExcelProperty的样例,页面传参HttpServletResponse response
时间: 2024-04-13 12:29:23 浏览: 16
好的,以下是一个使用 Java 和 EasyExcel 库导出多个带有 Java 实体类 `@ExcelProperty` 注解的 sheet 页,并将结果直接写入 HttpServletResponse 响应对象的示例代码:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.metadata.WriteSheet;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ExcelExporter {
public static void exportToResponse(HttpServletResponse response) throws IOException {
// 设置响应头信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=multi_sheet_example.xlsx");
// 创建要导出的数据列表
List<Student> students = new ArrayList<>();
students.add(new Student("张三", 20, "男"));
students.add(new Student("李四", 25, "女"));
List<Course> courses = new ArrayList<>();
courses.add(new Course("数学", 90));
courses.add(new Course("英语", 80));
// 创建 ExcelWriter 对象
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
// 导出第一个 sheet 页的数据
WriteSheet sheet1 = EasyExcel.writerSheet(0, "Sheet1").head(Student.class).build();
excelWriter.write(students, sheet1);
// 导出第二个 sheet 页的数据
WriteSheet sheet2 = EasyExcel.writerSheet(1, "Sheet2").head(Course.class).build();
excelWriter.write(courses, sheet2);
// 关闭 ExcelWriter,释放资源
excelWriter.finish();
}
public static class Student {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private int age;
@ExcelProperty("性别")
private String gender;
// 构造方法、getter 和 setter 略...
}
public static class Course {
@ExcelProperty("学科")
private String subject;
@ExcelProperty("成绩")
private int score;
// 构造方法、getter 和 setter 略...
}
}
```
上述代码定义了两个实体类 `Student` 和 `Course`,并在类中使用 `@ExcelProperty` 注解来指定导出 Excel 时的列名。
示例代码中,导出的数据分为两个 sheet 页,分别是学生信息和课程信息。
`exportToResponse` 方法接受一个 `HttpServletResponse` 对象作为参数,通过设置响应头信息将 Excel 文件直接写入响应的输出流中,实现直接下载。
请确保已将 EasyExcel 库添加到项目的依赖中,例如通过 Maven 的方式:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.4.3</version>
</dependency>
```
希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。