Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. ===========================
  2. EasyPoi Excel和 Word简易工具类
  3. ===========================
  4. easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员
  5. 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板
  6. 语言(熟悉的表达式语法),完成以前复杂的写法
  7. 作者博客:http://blog.csdn.net/qjueyue
  8. 作者邮箱: qrb.jueyue@gmail.com
  9. QQ群: 364192721
  10. ---------------------------
  11. EasyPoi的主要特点
  12. --------------------------
  13. 1.设计精巧,使用简单
  14. 2.接口丰富,扩展简单
  15. 3.默认值多,write less do more
  16. 4.AbstractView 支持,web导出可以简单明了
  17. ---------------------------
  18. EasyPoi的几个入口工具类
  19. ---------------------------
  20. 1.ExcelExportUtil Excel导出(普通导出,模板导出)
  21. 2.ExcelImportUtil Excel导入
  22. 3.WordExportUtil Word导出(只支持docx ,doc版本poi存在图片的bug,暂不支持)
  23. ---------------------------
  24. 关于Excel导出XLS和XLSX区别
  25. ---------------------------
  26. 1.导出时间XLS比XLSX快2-3倍
  27. 2.导出大小XLS是XLSX的2-3倍或者更多
  28. 3.导出需要综合网速和本地速度做考虑^~^
  29. --------------------------
  30. 版本修改
  31. --------------------------
  32. - 2.0.7-release--推荐更新
  33. - 增加了合计的参数,便于统计合计信息
  34. - 修改了样式设置,使用默认设置,提供其他设置,和样式接口
  35. - 模板导出增加了插入导出的功能
  36. - 模板导出重用了Excel导出的代码功能更加强劲
  37. - 新增了Sax导入方式,大数据导入提供接口操作
  38. - Word修改了页眉页脚不替换的bug
  39. - 修改了捕获异常日志的bug
  40. - 修复了模板导出,Spring View没识别版本的bug
  41. - 修复了其他一些小bug
  42. - 2.0.6-release
  43. - 修复导入的自定义格式异常
  44. - 修复导入的BigDecimal不识别
  45. - 导出大数据替换为SXSSFWorkbook,提高07版本Excel导出效率
  46. - 根据sonar的提示,修复编码格式问题
  47. - 做了更加丰富的测试
  48. - word 导出的优化
  49. - 2.0.6-SNAPSHOT
  50. - 增加map的导出
  51. - 增加index 列
  52. ---------------------------
  53. EasyPoi 文档
  54. ---------------------------
  55. 这几篇是旧的教程,不过和现在大同小异
  56. [Excel 介绍篇](http://note.youdao.com/share/?id=ea5166076313d437abbfb28a18d85486&type=note)
  57. [Excel 工具类](http://note.youdao.com/share/?id=dcfef5355d1d75b718be8fd563ad5216&type=note)
  58. [Excel 注解介绍.第一篇](http://note.youdao.com/share/?id=9898d1777ca97b81d82a6e151b880dbb&type=note)
  59. [Excel 注解介绍.第二篇](http://note.youdao.com/share/?id=9898d1777ca97b81d82a6e151b880dbb&type=note)
  60. [Excel 实体类](http://note.youdao.com/share/?id=dab97eababf8e91356f87be204b581e8&type=note)
  61. [Word模板导出教程](http://note.youdao.com/share/?id=26794c8eb4a285828663178c0ae854a2&type=note)
  62. 后面都是新的了
  63. [EasyPoi-在财务报表中的应用](http://git.oschina.net/jueyue/easypoi/wikis/EasyPoi-%E5%9C%A8%E8%B4%A2%E5%8A%A1%E6%8A%A5%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8)
  64. [EasyPoi-如何筛选导出属性](http://git.oschina.net/jueyue/easypoi/wikis/EasyPoi-%E5%A6%82%E4%BD%95%E7%AD%9B%E9%80%89%E5%AF%BC%E5%87%BA%E5%B1%9E%E6%80%A7)
  65. [EasyPoi 在spring mvc中简易开发方式](http://note.youdao.com/share/?id=8b04c4d88a0574a59aeaffd142c8e34b&type=note)
  66. [EasyPoi-新版自定义导出样式类型](http://note.youdao.com/share/?id=7937a9fe15f1016b8f39bf813be894f8&type=note)
  67. ---------------------------
  68. EasyPoi导出实例
  69. ---------------------------
  70. 1.注解,导入导出都是基于注解的,实体上做上注解,标示导出对象,同时可以做一些操作
  71. ```Java
  72. @ExcelTarget("courseEntity")
  73. public class CourseEntity implements java.io.Serializable {
  74. /** 主键 */
  75. private String id;
  76. /** 课程名称 */
  77. @Excel(name = "课程名称", orderNum = "1", needMerge = true)
  78. private String name;
  79. /** 老师主键 */
  80. @ExcelEntity(id = "yuwen")
  81. @ExcelVerify()
  82. private TeacherEntity teacher;
  83. /** 老师主键 */
  84. @ExcelEntity(id = "shuxue")
  85. private TeacherEntity shuxueteacher;
  86. @ExcelCollection(name = "选课学生", orderNum = "4")
  87. private List<StudentEntity> students;
  88. ```
  89. 2.基础导出
  90. 传入导出参数,导出对象,以及对象列表即可完成导出
  91. ```Java
  92. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
  93. "2412312", "测试", "测试"), CourseEntity.class, list);
  94. ```
  95. 3.基础导出,带有索引
  96. 在到处参数设置一个值,就可以在导出列增加索引
  97. ```Java
  98. ExportParams params = new ExportParams("2412312", "测试", "测试");
  99. params.setAddIndex(true);
  100. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(params,
  101. TeacherEntity.class, telist);
  102. ```
  103. 4.导出Map
  104. 创建类似注解的集合,即可完成Map的导出,略有麻烦
  105. ```Java
  106. List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
  107. entity.add(new ExcelExportEntity("姓名", "name"));
  108. entity.add(new ExcelExportEntity("性别", "sex"));
  109. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  110. Map<String, String> map;
  111. for (int i = 0; i < 10; i++) {
  112. map = new HashMap<String, String>();
  113. map.put("name", "1" + i);
  114. map.put("sex", "2" + i);
  115. list.add(map);
  116. }
  117. HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
  118. "测试", "测试"), entity, list);
  119. ```
  120. 5.模板导出
  121. 根据模板配置,完成对应导出
  122. ```Java
  123. TemplateExportParams params = new TemplateExportParams();
  124. params.setHeadingRows(2);
  125. params.setHeadingStartRow(2);
  126. Map<String,Object> map = new HashMap<String, Object>();
  127. map.put("year", "2013");
  128. map.put("sunCourses", list.size());
  129. Map<String,Object> obj = new HashMap<String, Object>();
  130. map.put("obj", obj);
  131. obj.put("name", list.size());
  132. params.setTemplateUrl("org/jeecgframework/poi/excel/doc/exportTemp.xls");
  133. Workbook book = ExcelExportUtil.exportExcel(params, CourseEntity.class, list,
  134. map);
  135. ```
  136. 6.导入
  137. 设置导入参数,传入文件或者流,即可获得相应的list
  138. ```Java
  139. ImportParams params = new ImportParams();
  140. params.setTitleRows(2);
  141. params.setHeadRows(2);
  142. //params.setSheetNum(9);
  143. params.setNeedSave(true);
  144. long start = new Date().getTime();
  145. List<CourseEntity> list = ExcelImportUtil.importExcel(new File(
  146. "d:/tt.xls"), CourseEntity.class, params);
  147. ```
  148. 7.和spring mvc的无缝融合
  149. 简单几句话,Excel导出搞定
  150. ```Java
  151. @RequestMapping(params = "exportXls")
  152. public String exportXls(CourseEntity course,HttpServletRequest request,HttpServletResponse response
  153. , DataGrid dataGrid,ModelMap map) {
  154. CriteriaQuery cq = new CriteriaQuery(CourseEntity.class, dataGrid);
  155. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, course, request.getParameterMap());
  156. List<CourseEntity> courses = this.courseService.getListByCriteriaQuery(cq,false);
  157. map.put(NormalExcelConstants.FILE_NAME,"用户信息");
  158. map.put(NormalExcelConstants.CLASS,CourseEntity.class);
  159. map.put(NormalExcelConstants.PARAMS,new ExportParams("课程列表", "导出人:Jeecg",
  160. "导出信息"));
  161. map.put(NormalExcelConstants.DATA_LIST,courses);
  162. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  163. }
  164. ```
  165. 8.Excel导入校验,过滤不符合规则的数据,追加错误信息到Excel,提供常用的校验规则,已经通用的校验接口
  166. ```Java
  167. /**
  168. * Email校验
  169. */
  170. @Excel(name = "Email", width = 25)
  171. @ExcelVerify(isEmail = true, notNull = true)
  172. private String email;
  173. /**
  174. * 手机号校验
  175. */
  176. @Excel(name = "Mobile", width = 20)
  177. @ExcelVerify(isMobile = true, notNull = true)
  178. private String mobile;
  179. ExcelImportResult<ExcelVerifyEntity> result = ExcelImportUtil.importExcelVerify(new File(
  180. "d:/tt.xls"), ExcelVerifyEntity.class, params);
  181. for (int i = 0; i < result.getList().size(); i++) {
  182. System.out.println(ReflectionToStringBuilder.toString(result.getList().get(i)));
  183. }
  184. ```