文件上传和导出
来源:互联网 发布:校园网络电视台介绍 编辑:程序博客网 时间:2024/06/06 09:31
1、导出
/**导出报表*/@RequestMapping(value = "/exportExcel", method = RequestMethod.GET)public void exportErrorExcel( HttpServletRequest request,HttpServletResponse response) {String courseId = request.getParameter("courseId");String classId = request.getParameter("classId");List<String> classIdStrList = Arrays.asList(classId.split(","));List<Long> classIdList = new ArrayList<Long>();for (int i=0;i<classIdStrList.size();i++){classIdList.add(Long.valueOf(classIdStrList.get(i)));}List<UserRegister> userRegisters = userRegisterService.findByClassIds(classIdList);String loginNames = "";for (int i=0;i<userRegisters.size();i++){if (i == userRegisters.size()-1){loginNames += userRegisters.get(i).getLoginName();}else{loginNames += userRegisters.get(i).getLoginName()+",";}}//获得的听课详情List<Map<String, Object>> courseCountList = new ArrayList<Map<String, Object>>();//得到课程IdCourse course = courseService.load(Long.valueOf(courseId));courseCountList = selectCourseStatisticByCourse(course.getCwCourseId(),loginNames,0,0).get("lectureInfoList");String fileName = "听课统计.xls";ArrayList<ArrayList<String>> datas = new ArrayList<ArrayList<String>>(); //导出的数据集合if (courseCountList.size() > 0){for (int i=0;i<courseCountList.size();i++){ArrayList<String> data = new ArrayList<String>();data.add(courseCountList.get(i).get("lectureName").toString());data.add(courseCountList.get(i).get("coursewareTime").toString());data.add(courseCountList.get(i).get("listenCount").toString());data.add(courseCountList.get(i).get("listenRate").toString());data.add(courseCountList.get(i).get("averageListenTime").toString());data.add(courseCountList.get(i).get("listenCount60").toString());data.add(courseCountList.get(i).get("listenCount80").toString());data.add(courseCountList.get(i).get("listenCount100").toString());datas.add(data);}}ArrayList<String> titles = new ArrayList<String>();titles.add("讲次名称");titles.add("总时长");titles.add("听课人数");titles.add("听课率");titles.add("平均听课时长");titles.add("听课完成率0%-60%人数");titles.add("听课完成率60%-80%人数");titles.add("听课完成率80%-100%人数");ExcelUtils excel = new ExcelUtils(titles,datas);try {String agent = request.getHeader("User-Agent");boolean isMSIE = (agent != null && (agent.indexOf("MSIE") != -1|| agent.indexOf("Trident") != -1));//fileName = URLEncoder. encode(fileName, "UTF-8");if(isMSIE){ //是IE浏览器fileName = URLEncoder.encode(fileName, "UTF-8");} else {fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");}response.reset();//清空输出流response.setHeader("Content-disposition", "attachment; filename=" +fileName);response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("UTF-8");excel.exportExcel(response.getOutputStream());} catch (Exception e) {e.printStackTrace();}}
2、上传
(1)导入controller
/**导入*/@RequestMapping(value = "/tofileUploadCommonIndex")public String tofileUploadCommonIndex(Model model, HttpServletRequest request) {return "modules/userbaseinfo/userBaseInfo_upload";}/**导入数据*/@RequestMapping(value = "/saveUser", method = RequestMethod.POST)public String saveUser(@ModelAttribute("UserBaseInfo") UserBaseInfo userBaseInfo, HttpServletRequest request,RedirectAttributes redirectAttributes,Model model) {//添加业务逻辑——导入数据//得到teacherIdObject userIdO = request.getSession().getAttribute("userId");Long userId = Long.valueOf(String.valueOf(userIdO));PartnerTeacher partnerTeacher = partnerTeacherService.selectByUserId(userId);userBaseInfo.setCreateUser(partnerTeacher.getUserId());userBaseInfo.setTeacherId(partnerTeacher.getId());userBaseInfo.setPartnerId(partnerTeacher.getPartnerId());userBaseInfo.setOrganizationalId(partnerTeacher.getOrganizationalId());Map<String, Object> importTeacher = userBaseInfoService.importUser(userBaseInfo);redirectAttributes.addFlashAttribute("msg", importTeacher.get("daoru").toString());return "redirect:/partnerteacheruser/partnerTeacherUser";}(2)导入service
@Override @Transactional(propagation= Propagation.REQUIRED, isolation= Isolation.READ_COMMITTED,timeout=10) public Map<String, Object> importUser(UserBaseInfo userBaseInfo) { //删除之前错误信息 UserBaseInfoFromExcel userBaseInfoFromExcel = new UserBaseInfoFromExcel(); userBaseInfoFromExcel.setBatchNo("老师导入"+String.valueOf(userBaseInfo.getCreateUser())); userBaseInfoFromExcel.setPartnerId(userBaseInfo.getPartnerId()); List<UserBaseInfoFromExcel> uList = userBaseInfoFromExcelMapper.selectError(userBaseInfoFromExcel); if (uList.size()>0){ for (UserBaseInfoFromExcel userBaseInfoFromExcel1:uList ) { userBaseInfoFromExcel1.setIsValid(IS_VALID.NO.getValue()); userBaseInfoFromExcel1.setUpdateUser(userBaseInfo.getCreateUser()); userBaseInfoFromExcel1.setUpdateDate(new Date()); userBaseInfoFromExcelMapper.update(userBaseInfoFromExcel1); } } //excel中数据放入columnIndexPropertyNameMap中 String[] array = userBaseInfo.getImportExceForBath().split("/"); String fileName = array[array.length - 1]; String fileUrl = FileUploadConstants.getPropValue("FILE_PATH_EXCEL") + File.separator + fileName; ImportDataUtil i = new ImportDataUtil(fileUrl); LinkedHashMap<Integer, String> columnIndexPropertyNameMap = new LinkedHashMap<>(); columnIndexPropertyNameMap.put(0, "realName"); columnIndexPropertyNameMap.put(1, "studentNum"); columnIndexPropertyNameMap.put(2, "mobilephone"); List<?> excelList = i.makeRelationShip("com.dongao.modules.userbaseinfo.model.UserBaseInfo", columnIndexPropertyNameMap); Map<String,Object> map = new HashMap<String,Object>(); //返回数据 int count = 0; // 成功导入条数 int errorCount = 0; // 错误数据条数 if (excelList.size() > 0 ){ for (int j = 0; j < excelList.size(); j++) { StringBuilder checkMsg = new StringBuilder(); StringBuilder info = new StringBuilder(); //条目 UserBaseInfo excelData = (UserBaseInfo)excelList.get(j); //读取一行 //过滤空行 if(StringUtils.isBlank(excelData.getRealName())&&StringUtils.isBlank(excelData.getStudentNum())&&StringUtils.isBlank(excelData.getMobilephone())){ continue;//不可见字符过滤 } if(StringUtils.isBlank(excelData.getRealName())){ checkMsg.append("姓名不能为空 /"); }else{ } if(StringUtils.isBlank(excelData.getStudentNum())){ checkMsg.append("学号不能为空 /"); }else{ UserBaseInfo userBaseInfo1 = new UserBaseInfo(); userBaseInfo1.setStudentNum(excelData.getStudentNum()); UserBaseInfo userBaseInfo2= userBaseInfoMapper.findByObj(userBaseInfo1); if (userBaseInfo2 != null) { checkMsg.append("学号重复 /"); } } if (StringUtils.isNotBlank(excelData.getMobilephone())){ boolean bl = isMobilePhoneLegal(excelData.getMobilephone()); if (false == bl){ checkMsg.append("手机号格式错误/"); } } if (StringUtils.isNotBlank(String.valueOf(checkMsg))) { //数据插入da_edu_user_base_info_from_excel表 UserBaseInfoFromExcel userBaseInfoFromExcel2 = new UserBaseInfoFromExcel(); userBaseInfoFromExcel2.setRealName(excelData.getRealName()); userBaseInfoFromExcel2.setStudentNum(excelData.getStudentNum()); if (StringUtils.isNotBlank(excelData.getMobilephone())){ userBaseInfoFromExcel2.setMobilephone(excelData.getMobilephone()); } userBaseInfoFromExcel2.setBatchNo("老师导入"+String.valueOf(userBaseInfo.getCreateUser()));//错误标记 userBaseInfoFromExcel2.setNoPassReason(checkMsg.toString()); userBaseInfoFromExcel2.setPartnerId(userBaseInfo.getPartnerId()); userBaseInfoFromExcel2.setIsValid(IS_VALID.YES.getValue()); userBaseInfoFromExcel2.setCreateUser(userBaseInfo.getCreateUser()); userBaseInfoFromExcel2.setCreateDate(new Date()); userBaseInfoFromExcelMapper.insert(userBaseInfoFromExcel2); errorCount++; } else { //数据插入da_edu_user_register表 UserRegister userRegister = new UserRegister(); userRegister.setLoginName(excelData.getStudentNum()); //默认密码123456 String salt = createSalt();//获取随机的盐值 String password= new KeyBean().getkeyBeanofStr(salt+Constants.PASSWORD); userRegister.setSalt(salt); userRegister.setPassword(password); userRegister.setStatus(Constants.Status.START.getValue()); userRegister.setType(Constants.REGISTER_TYPE.BATCH.getValue()); userRegister.setUserRole(Constants.USER_ROLE.STUDENT.getValue()); userRegister.setIsValid(IS_VALID.YES.getValue()); userRegister.setCreateUser(userBaseInfo.getCreateUser()); userRegister.setCreateDate(new Date()); userRegisterMapper.insert(userRegister); //数据插入da_edu_user_base_info表 UserRegister userRegister1 = userRegisterMapper.loadUserRegisterByLoginName(excelData.getStudentNum()); UserBaseInfo userBaseInfo1 = new UserBaseInfo(); userBaseInfo1.setUserId(userRegister1.getId()); userBaseInfo1.setLoginName(userRegister1.getLoginName()); userBaseInfo1.setRealName(excelData.getRealName()); userBaseInfo1.setStudentNum(excelData.getStudentNum()); if (StringUtils.isNotBlank(excelData.getMobilephone())){ userBaseInfo1.setMobilephone(excelData.getMobilephone()); } userBaseInfo1.setOrganizationalId(userBaseInfo.getOrganizationalId()); userBaseInfo1.setPartnerId(userBaseInfo.getPartnerId()); userBaseInfo1.setCreateUser(userBaseInfo.getCreateUser()); userBaseInfo1.setOrigin(Constants.ORIGIN.BATCH.getValue()); this.save(userBaseInfo1); //数据插入da_edu_partner_teacher_user表 PartnerTeacherUser partnerTeacherUser = new PartnerTeacherUser(); partnerTeacherUser.setTeacherId(userBaseInfo.getTeacherId()); partnerTeacherUser.setUserId(userRegister1.getId()); partnerTeacherUser.setCreateUser(userBaseInfo.getCreateUser()); partnerTeacherUser.setCreateDate(new Date()); partnerTeacherUser.setIsValid(IS_VALID.YES.getValue()); partnerTeacherUserMapper.insert(partnerTeacherUser); count++; } } map.put("daoru", "成功导入:" + count + "条。 错误的有:" + errorCount +"条。"); }else { map.put("daoru", "表格中无数据,请重新导入!"); } return map; } /** * 生成salt * * @param * @return */ private String createSalt() { String salt = ""; salt += (int) (Math.random() * 9 + 1); for (int i = 0; i < 5; i++) { salt += (int) (Math.random() * 10); } return salt; } /**手机号格式验证**/ public static boolean isMobilePhoneLegal(String str) throws PatternSyntaxException { String regExp = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$"; Pattern p = Pattern.compile(regExp); Matcher m = p.matcher(str); return m.matches(); }(3)导入页面
<style> .manage_add{ margin-left: 100px; } .Validform_checktip{ margin-left:0px; } .ass_div{ width: 382px; }</style><div class="manage_add"> <form class="addForm" target="_parent" id="userBaseInfoImportForm" action="${request.getContextPath()}/userbaseinfo/userBaseInfo/saveUser" method="post"> <div class="ass_div clearfix" > <p class="fl">导入学员:</p> <input type="hidden" name="importExceForBath" id="importExceForBath" value="" datatype="*" nullmsg="请上传文件!" errormsg="请上传文件!"/> <span class="Validform_checktip" ></span> <iframe scrolling="no" src="${request.getContextPath()}/uploadfile/uploadFile/uploadFileData?filePath=FILE_PATH_EXCEL&type=*.EXCEL&dom=importExceForBath&fileCategory=importUser" id="main" frameborder="0" width="350" height="100"> </iframe> </div> <div class="ass_div clearfix"> <span class="Validform_checktip" ></span> </div> <div class="clearfix copy_btns" > <td colspan="3" > <p class="btn fl y_btn" type="button" id="saveBtn">保存</p> <p type="button" class="btn fl g_btn" >取消</p> </td> </div> </form></div><script type="text/javascript"> $(function(){ $('#userBaseInfoImportForm').Validform({ btnSubmit:"#saveBtn", tiptype:2, showAllError:true }); $('.chosen').chosen({ "no_results_text":'未找到匹配数据!', "width":"120px", "allow_single_deselect":true }); $('#cancelBtn').click(function(){ parent.jBox.close(true); }); });</script>
(4)导入插件(存放在百度云中layui)
@RequestMapping(value = {"/uploadFileData"}, method = {RequestMethod.GET,RequestMethod.POST})public String uploadFileData(Model model, HttpServletRequest request) {//TODO...String filePath = request.getParameter("filePath");String type = request.getParameter("type");String dom = request.getParameter("dom");String imgSrc = request.getParameter("imgSrc");String saveFilePath = FileUploadConstants.getPropValue(filePath);String fileCategory = request.getParameter("fileCategory");//文件存储所在文件夹,回显路径=基路径+该文件夹String url=Constants.FIlE_BASE_URL + fileCategory+"/";request.setAttribute("filePath",filePath);request.setAttribute("type",type);request.setAttribute("dom",dom);request.setAttribute("imgSrc",imgSrc);request.setAttribute("saveFilePath",saveFilePath);request.setAttribute("url",url);HttpSession session = request.getSession();if(session !=null){request.setAttribute("jsessionid", session.getId());}return "modules/send/send2";
<html><head> <meta charset="utf-8"> <title>layui</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="${request.getContextPath()}/layui/css/layui.css" media="all"></head><body><div class="layui-upload"> <input type="hidden" name="extname" id="extname" value="${extname}"/> <input type="hidden" name="filename" id="filename" value="${filename}"/> <input type="hidden" name="filePath" id="filePath" value="${filePath}"/> <input type="hidden" name="saveFilePath" id="saveFilePath" value="${saveFilePath}"/> <input type="hidden" name="proVal" id="proVal" value="${filePath}" /> <input type="hidden" name="jsessionid" id="jsessionid" value="${jsessionid}" /> <button type="button" class="layui-btn layui-btn-danger" id="test1"><i class="layui-icon"></i>上传文件</button><#-- <#if type?? && type == "*.JPG" > <div class="layui-upload-list"> <blockquote class="layui-elem-quote" style="margin-top: 10px;"> <img src="http://static.dongao.com/image/no_photo.jpg" class="layui-upload-img" id="imgSrc" width="100px" height="100px"> <p id="demoText"></p> </blockquote> </div> </#if>--></div><script src="${request.getContextPath()}/layui/layui.all.js" charset="utf-8"></script><!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 --><script> layui.use('upload', function(){ var $ = layui.jquery,upload = layui.upload; //上传 var type = "${type}"; var desc = ''; var pic = 'gif|jpg|jpeg|bmp|png'; var doc = 'doc|docx|xls|xlsx|pdf'; var exceltype='xls|xlsx'; if(type != '' && type.toLocaleUpperCase() =='*.CSS'){ desc='css|CSS'; }else if(type != '' && type.toLocaleUpperCase()=='*.JPG'){ desc=pic; }else if(type != '' && type.toLocaleUpperCase() =='*.FTL'){ desc='ftl'; }else if(type != '' && type.toLocaleUpperCase() =='*.EXCEL'){ desc=exceltype; }else if(type != '' && type.toLocaleUpperCase() =='*.JS'){ desc='js|JS'; } var uploadInst = upload.render({ elem: '#test1' ,accept: 'file' ,exts: desc ,url: '${request.getContextPath()}/js/utils/expupload/upload.jsp;jsessionid=${jsessionid}?filetype='+$('#extname').val()+'&proVal='+$('#proVal').val()+'&filename='+$('#filename').val() ,before: function(obj){ //预读本地文件示例,不支持ie8 layer.load(); //上传loading obj.preview(function(index, file, result){ $('#imgSrc').attr('src', result); //图片链接(base64) }); } ,done: function(res){ //如果上传失败 if(res.code == 0){ layer.closeAll('loading'); //关闭loading return layer.msg('上传失败'); }else{ layer.closeAll('loading'); //关闭loading $($(window.parent.document).find("input[name='${dom}']")[0]).attr("value", '${url}'+trim(res.name)); $($(window.parent.document).find("img[id='${imgSrc}']")).attr("src", '${url}'+trim(res.name)); return layer.msg('上传成功'); } //上传成功 } ,error: function(){ //演示失败状态,并实现重传 var demoText = $('#demoText'); demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>'); demoText.find('.demo-reload').on('click', function(){ uploadInst.upload(); }); } }); }); function trim(str){ return str.replace(/(^\s*)|(\s*$)/g, ""); }</script></body></html>
阅读全文
0 0
- 文件上传和导出
- ADF文件导出和上传功能浅谈
- 文件上传、下载、导出
- POI--------文件上传导出
- 上传图片和导出文件测试用例
- 上传文件和导出Excel的公共模板
- itunes 歌曲导出 和上传
- iOS 最新证书生成及导出p12文件和友盟的推送上传文件
- laravel 文件上传 分页 excl导入导出
- poi之Excel文件上传到数据库和导出(结合ssh)
- 单文件上传和多文件上传
- Struct2 文件上传和servlet 文件上传
- angular上传文件和ajax上传文件
- 文件上传和下载
- 文件上传和下载
- 文件上传和保存
- 文件上传和下载
- 文件上传和下载
- 临时更换 Pyhon pip 安装源
- 值传递与引用传递
- 赢在面试之JavaWeb篇(7)
- Mac取消Chrome自动更新
- MySQL优化
- 文件上传和导出
- Linux中 vim的文件名处理函数
- PLSQL解析JSON,并保存到数据库
- git 学习记录
- GitHub issue
- Vue项目发布到github Page步骤
- android实现多层红点提示的功能
- OpenCV2编程手册笔记之 5.3形态学滤波对图像进行开闭运算
- Java中HashMap和HashSet存储机制