用poi導出Excel表格,需要配置很多東西,也比較麻煩,這里使用poi的封裝easypoi,可以快速配置,實現Excel或者word文件的導出。這里我們結合SpringMVC開發easypoi。
1,導入以下3個.jar包:這里是springMVC和easypoi所需的jar包,主要是easypoi-base和easypoi-web,其它都是關聯所需的jar包,我們需要commons-lang3.jar包,開始使用commons-lang2.6版本會出現錯誤。
2,spring-mvc.xml配置如下:
class="org.springframework.web.servlet.view.BeanNameViewResolver"?p:order="0">
1.ExcelExportUtil?Excel導出(普通導出,模板導出)
2.ExcelImportUtil?Excel導入
3.WordExportUtil?Word導出(只支持docx?,doc版本poi
3 Controller
導入方式,可以根據映射關系,通過注解,字段名符合導入,如下例
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?fileMap?=?multipartRequest.getFileMap();
for?(Map.Entry?entity?:?fileMap.entrySet())?{
MultipartFile?file?=?entity.getValue();//?獲取上傳文件對象
ImportParams?params?=?new?ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try?{
List?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;
導出方式一,可以自定義輸出字段,并賦值
@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?entityList?=?new?ArrayList();
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>?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;
}
導出方式二,根據實體映射現實字段
@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?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?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;
}