EasyPOI簡單用例,簡單有效

    用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

    wKiom1k_STSiTAO_AACWK3szJ3M030.png-wh_50



 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;
	}

wKioL1k_WiWSJAb0AABY-fcNsH8141.png-wh_50


導出方式二,根據實體映射現實字段 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

相關文章
相關標籤/搜索