You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

basedemo.md 7.5 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. --------------------------
  2. EasyPoi 模板 表达式支持
  3. --------------------------
  4. - 空格分割
  5. - 三目运算 {{test ? obj:obj2}}
  6. - n: 表示 这个cell是数值类型 {{n:}}
  7. - le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
  8. - fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
  9. - fn: 格式化数字 {{fn:(obj;###.00)}}
  10. - fe: 遍历数据,创建row
  11. - !fe: 遍历数据不创建row
  12. - $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
  13. - !if: 删除当前列 {{!if:(test)}}
  14. - 单引号表示常量值 '' 比如'1' 那么输出的就是 1
  15. - &NULL& 控制
  16. - ]] 换行符
  17. ---------------------------
  18. EasyPoi导出实例
  19. ---------------------------
  20. 1.注解,导入导出都是基于注解的,实体上做上注解,标示导出对象,同时可以做一些操作
  21. ```Java
  22. @ExcelTarget("courseEntity")
  23. public class CourseEntity implements java.io.Serializable {
  24. /** 主键 */
  25. private String id;
  26. /** 课程名称 */
  27. @Excel(name = "课程名称", orderNum = "1", needMerge = true)
  28. private String name;
  29. /** 老师主键 */
  30. @ExcelEntity(id = "yuwen")
  31. @ExcelVerify()
  32. private TeacherEntity teacher;
  33. /** 老师主键 */
  34. @ExcelEntity(id = "shuxue")
  35. private TeacherEntity shuxueteacher;
  36. @ExcelCollection(name = "选课学生", orderNum = "4")
  37. private List<StudentEntity> students;
  38. ```
  39. 2.基础导出
  40. 传入导出参数,导出对象,以及对象列表即可完成导出
  41. ```Java
  42. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
  43. "2412312", "测试", "测试"), CourseEntity.class, list);
  44. ```
  45. 3.基础导出,带有索引
  46. 在到处参数设置一个值,就可以在导出列增加索引
  47. ```Java
  48. ExportParams params = new ExportParams("2412312", "测试", "测试");
  49. params.setAddIndex(true);
  50. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(params,
  51. TeacherEntity.class, telist);
  52. ```
  53. 4.导出Map
  54. 创建类似注解的集合,即可完成Map的导出,略有麻烦
  55. ```Java
  56. List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
  57. entity.add(new ExcelExportEntity("姓名", "name"));
  58. entity.add(new ExcelExportEntity("性别", "sex"));
  59. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  60. Map<String, String> map;
  61. for (int i = 0; i < 10; i++) {
  62. map = new HashMap<String, String>();
  63. map.put("name", "1" + i);
  64. map.put("sex", "2" + i);
  65. list.add(map);
  66. }
  67. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
  68. "测试", "测试"), entity, list);
  69. ```
  70. 5.模板导出
  71. 根据模板配置,完成对应导出
  72. ```Java
  73. TemplateExportParams params = new TemplateExportParams();
  74. params.setHeadingRows(2);
  75. params.setHeadingStartRow(2);
  76. Map<String,Object> map = new HashMap<String, Object>();
  77. map.put("year", "2013");
  78. map.put("sunCourses", list.size());
  79. Map<String,Object> obj = new HashMap<String, Object>();
  80. map.put("obj", obj);
  81. obj.put("name", list.size());
  82. params.setTemplateUrl("org/jeecgframework/poi/excel/doc/exportTemp.xls");
  83. Workbook book = ExcelExportUtil.exportExcel(params, CourseEntity.class, list,
  84. map);
  85. ```
  86. 6.导入
  87. 设置导入参数,传入文件或者流,即可获得相应的list
  88. ```Java
  89. ImportParams params = new ImportParams();
  90. params.setTitleRows(2);
  91. params.setHeadRows(2);
  92. //params.setSheetNum(9);
  93. params.setNeedSave(true);
  94. long start = new Date().getTime();
  95. List<CourseEntity> list = ExcelImportUtil.importExcel(new File(
  96. "d:/tt.xls"), CourseEntity.class, params);
  97. ```
  98. 7.和spring mvc的无缝融合
  99. 简单几句话,Excel导出搞定
  100. ```Java
  101. @RequestMapping(params = "exportXls")
  102. public String exportXls(CourseEntity course,HttpServletRequest request,HttpServletResponse response
  103. , DataGrid dataGrid,ModelMap map) {
  104. CriteriaQuery cq = new CriteriaQuery(CourseEntity.class, dataGrid);
  105. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, course, request.getParameterMap());
  106. List<CourseEntity> courses = this.courseService.getListByCriteriaQuery(cq,false);
  107. map.put(NormalExcelConstants.FILE_NAME,"用户信息");
  108. map.put(NormalExcelConstants.CLASS,CourseEntity.class);
  109. map.put(NormalExcelConstants.PARAMS,new ExportParams("课程列表", "导出人:Jeecg",
  110. "导出信息"));
  111. map.put(NormalExcelConstants.DATA_LIST,courses);
  112. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  113. }
  114. ```
  115. 8.Excel导入校验,过滤不符合规则的数据,追加错误信息到Excel,提供常用的校验规则,已经通用的校验接口
  116. ```Java
  117. @Excel(name = "Email", width = 25)
  118. @Max(value = 15,message = "max 最大值不能超过15")
  119. private int email;
  120. /**
  121. * 手机号
  122. */
  123. @Excel(name = "Mobile", width = 20)
  124. @NotNull
  125. private String mobile;
  126. ExcelImportResult<ExcelVerifyEntity> result = ExcelImportUtil.importExcelVerify(new File(
  127. "d:/tt.xls"), ExcelVerifyEntity.class, params);
  128. for (int i = 0; i < result.getList().size(); i++) {
  129. System.out.println(ReflectionToStringBuilder.toString(result.getList().get(i)));
  130. }
  131. ```
  132. 9.导入Map
  133. 设置导入参数,传入文件或者流,即可获得相应的list,自定义Key,需要实现IExcelDataHandler接口
  134. ```Java
  135. ImportParams params = new ImportParams();
  136. List<Map<String,Object>> list = ExcelImportUtil.importExcel(new File(
  137. "d:/tt.xls"), Map.class, params);
  138. ```
  139. 10.大数据量Excel导出
  140. exportBigExcel 的方法 ,最后可以关闭closeExportBigExcel 也可以不关闭
  141. 11.如果View不起作用,已经发现被其他View处理掉的情况,使用下面这个,进行了统一封装,相同的效果
  142. ```Java
  143. PoiBaseView
  144. public static void render(Map<String, Object> model, HttpServletRequest request,
  145. HttpServletResponse response, String viewName) {
  146. PoiBaseView view = null;
  147. if (BigExcelConstants.BIG_EXCEL_VIEW.equals(viewName)) {
  148. view = new BigExcelExportView();
  149. } else if (MapExcelConstants.JEECG_MAP_EXCEL_VIEW.equals(viewName)) {
  150. view = new JeecgMapExcelView();
  151. } else if (NormalExcelConstants.JEECG_EXCEL_VIEW.equals(viewName)) {
  152. view = new JeecgSingleExcelView();
  153. } else if (TemplateExcelConstants.JEECG_TEMPLATE_EXCEL_VIEW.equals(viewName)) {
  154. view = new JeecgTemplateExcelView();
  155. } else if (MapExcelGraphConstants.MAP_GRAPH_EXCEL_VIEW.equals(viewName)) {
  156. view = new MapGraphExcelView();
  157. }
  158. try {
  159. view.renderMergedOutputModel(model, request, response);
  160. } catch (Exception e) {
  161. LOGGER.error(e.getMessage(), e);
  162. }
  163. }
  164. // Demo
  165. @RequestMapping(params = "exportXls")
  166. public void exportXls(CourseEntity course,HttpServletRequest request,HttpServletResponse response
  167. , DataGrid dataGrid,ModelMap map) {
  168. CriteriaQuery cq = new CriteriaQuery(CourseEntity.class, dataGrid);
  169. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, course, request.getParameterMap());
  170. List<CourseEntity> courses = this.courseService.getListByCriteriaQuery(cq,false);
  171. map.put(NormalExcelConstants.FILE_NAME,"用户信息");
  172. map.put(NormalExcelConstants.CLASS,CourseEntity.class);
  173. map.put(NormalExcelConstants.PARAMS,new ExportParams("课程列表", "导出人:Jeecg",
  174. "导出信息"));
  175. map.put(NormalExcelConstants.DATA_LIST,courses);
  176. PoiBaseView.render(map,request,response,NormalExcelConstants.JEECG_EXCEL_VIEW);
  177. }
  178. ```