Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

61 рядки
2.3 KiB

  1. 2.3.2 集合定义
  2. ===
  3. 路飞很快的完成了老师的任务,花了也就是喝杯茶的时间,就交差了,但过了一会就又被老师叫去了,让他给出一个某个班级选择选择某些课的学生以及对应的老师
  4. 路飞又很快的想到了Easypoi,其中有一对多的导出,这不正是一对多的体现吗,然后他继续定义实体:
  5. 一个课程对应一个老师
  6. 一个课程对应N个学生
  7. 课程的实体
  8. ```java
  9. @ExcelTarget("courseEntity")
  10. public class CourseEntity implements java.io.Serializable {
  11. /** 主键 */
  12. private String id;
  13. /** 课程名称 */
  14. @Excel(name = "课程名称", orderNum = "1", width = 25)
  15. private String name;
  16. /** 老师主键 */
  17. @ExcelEntity(id = "absent")
  18. private TeacherEntity mathTeacher;
  19. @ExcelCollection(name = "学生", orderNum = "4")
  20. private List<StudentEntity> students;
  21. }
  22. ```
  23. 教师的实体
  24. ```java
  25. @ExcelTarget("teacherEntity")
  26. public class TeacherEntity implements java.io.Serializable {
  27. private String id;
  28. /** name */
  29. @Excel(name = "主讲老师_major,代课老师_absent", orderNum = "1", isImportField = "true_major,true_absent")
  30. private String name;
  31. ```
  32. 这里在课程这个实体里面就完成了一堆多的导出,达到了我们基础需求,同时使用了orderNum对我们的列进行了排序,满足老师的需求,导出代码如下
  33. ```java
  34. Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2412312", "测试", "测试"),
  35. CourseEntity.class, list);
  36. ```
  37. 这样我们就完成了老师的需求,效果如图2.3.2-1
  38. 但是课程名和代课老师没有合并,不太美观
  39. 路飞又果断给课程名称和代课老师加了needMerge = true的属性,就可以完成单元格的合并
  40. ```java
  41. /** 课程名称 */
  42. @Excel(name = "课程名称", orderNum = "1", width = 25,needMerge = true)
  43. private String name;
  44. //--------------------------------
  45. /** name */
  46. @Excel(name = "主讲老师_major,代课老师_absent", orderNum = "1",needMerge = true, isImportField = "true_major,true_absent")
  47. ```
  48. 效果如图2.3.2-2
  49. 到这里,路飞就完美的完成了老师的任务,快乐的去交差了
  50. ![图2.3.2-1](https://static.oschina.net/uploads/space/2017/0622/221100_MD8y_1157922.png)
  51. ![图2.3.2-2](https://static.oschina.net/uploads/space/2017/0622/222202_217m_1157922.png)