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

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