用poi導出Excel表格,須要配置不少東西,也比較麻煩,這裏使用poi的封裝easypoi,能夠快速配置,實現Excel或者word文件的導出。這裏咱們結合SpringMVC開發easypoi。css
1,導入如下3個.jar包:這裏是springMVC和easypoi所需的jar包,主要是easypoi-base和easypoi-web,其它都是關聯所需的jar包,咱們須要commons-lang3.jar包,開始使用commons-lang2.6版本會出現錯誤。java
2,spring-mvc.xml配置以下:web
<!-- Bean解析器,級別高於默認解析器,尋找bean對象進行二次處理 --> <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"> </bean> <!-- Excel 處理 根據用戶輸入進行對象處理 --> <bean id="jeecgExcelView" class="org.jeecgframework.poi.excel.view.JeecgSingleExcelView" /> <bean id="jeecgTemplateExcelView" class="org.jeecgframework.poi.excel.view.JeecgTemplateExcelView" /> <bean id="jeecgTemplateWordView" class="org.jeecgframework.poi.excel.view.JeecgTemplateWordView" /> <bean id="jeecgMapExcelView" class="org.jeecgframework.poi.excel.view.JeecgMapExcelView" />
1.ExcelExportUtil Excel導出(普通導出,模板導出) 2.ExcelImportUtil Excel導入 3.WordExportUtil Word導出(只支持docx ,doc版本poi
3 Controllerspring
導入方式,能夠根據映射關係,經過註解,字段名符合導入,以下例sql
public class RechannelreportEntity implements java.io.Serializable { /**id*/ private java.lang.Integer id; /**amount*/ @Excel(name="amount") private java.lang.Integer amount; /**amounts*/ @Excel(name="amounts") private java.lang.Integer amounts; /**counts*/ @Excel(name="counts") private java.lang.Integer counts; /**date*/ @Excel(name="date",format = "yyyy-MM-dd") private java.util.Date date; /**username*/ .......
@SuppressWarnings("unchecked") @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 獲取上傳文件對象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List<RechannelreportEntity> listRechannelreportEntitys = ExcelImportUtil.importExcel(file.getInputStream(),RechannelreportEntity.class,params); for (RechannelreportEntity rechannelreport : listRechannelreportEntitys) { rechannelreportService.save(rechannelreport); } j.setMsg("文件導入成功!"); } catch (Exception e) { j.setMsg("文件導入失敗!"); logger.error(ExceptionUtil.getExceptionMessage(e)); }finally{ try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j;
導出方式一,能夠自定義輸出字段,並賦值spring-mvc
@RequestMapping(params = "exportXls2") public String string2(RechannelreportEntity rechannelreport,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { //"&&searchColums=&undefined=&sqlbuilder=&username=CL007&date_begin=2017-01-17&date_end=2017-01-17" List<ExcelExportEntity> entityList = new ArrayList<ExcelExportEntity>(); entityList.add(new ExcelExportEntity("日期", "cou1", 15)); entityList.add(new ExcelExportEntity("渠道號", "cou2", 15)); entityList.add(new ExcelExportEntity("原始金額", "cou3", 15)); entityList.add(new ExcelExportEntity("扣量金額", "cou4", 15)); entityList.add(new ExcelExportEntity("結算金額", "cou5", 15)); //這邊的getData2 方法是對 MapExcelConstants.MAP_LIST進行賦值 List<Map<String, String>> dataResult = getData2(getDateGrid(rechannelreport, request)); modelMap.put(MapExcelConstants.ENTITY_LIST, entityList); modelMap.put(MapExcelConstants.MAP_LIST, dataResult); modelMap.put(MapExcelConstants.FILE_NAME, DateUtils.formatDate(new Date()) + "數據"); Date now = new Date(); modelMap.put(NormalExcelConstants.PARAMS, new ExportParams(rechannelreport.getUsername() + "對帳單詳情", "導出日期:" + DateUtils.formatDate(new Date()) + " ", "導出信息")); return MapExcelConstants.JEECG_MAP_EXCEL_VIEW; }
導出方式二,根據實體映射現實字段 mvc
@ExcelTarget("courseEntity") public class CourseEntity implements java.io.Serializable { /** 主鍵 */ private String id; /** 課程名稱 */ @Excel(name = "課程名稱", orderNum = "1", needMerge = true) private String name; /** 老師主鍵 */ @ExcelEntity(id = "yuwen") @ExcelVerify() private TeacherEntity teacher; /** 老師主鍵 */ @ExcelEntity(id = "shuxue") private TeacherEntity shuxueteacher; @ExcelCollection(name = "選課學生", orderNum = "4") private List<StudentEntity> students;
@RequestMapping(params = "exportXls") public String exportXls(CourseEntity course,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap map) { CriteriaQuery cq = new CriteriaQuery(CourseEntity.class, dataGrid); org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, course, request.getParameterMap()); List<CourseEntity> courses = this.courseService.getListByCriteriaQuery(cq,false); map.put(NormalExcelConstants.FILE_NAME,"用戶信息"); map.put(NormalExcelConstants.CLASS,CourseEntity.class); map.put(NormalExcelConstants.PARAMS,new ExportParams("課程列表", "導出人:Jeecg", "導出信息")); map.put(NormalExcelConstants.DATA_LIST,courses); return NormalExcelConstants.JEECG_EXCEL_VIEW; }
參考案例:http://www.oschina.net/p/easypoi_excel/ app
http://blog.csdn.net/w410589502/article/details/54093341 ide