首先,页面上的代码:前端
<div class="wgt-pop-importExcel" style="display: none" id="batch_add_user"> <form id="input_form" enctype="multipart/form-data" action="<%=RD.get("orgUrl")%>do?action=org/base/member_manager&start=input_org_member&ck_OrgId=<%=org_id%>" method="post"> <div class="tip-1">您想要下载模板,快速导入组织成员信息。若您已拥有组织成员 信息文件,可直接导入。<a href="<%=RD.get("orgUrl")%>/aidTemplate/memberTmpl.xls">员工列表导入范本.xls</a> </div> <div class="upload"> <div class="btn btn-5 btn-uploadfile"> <input type="file" id="user_Info" name="user_Info" accept=".xls"><span>上传</span> <input type="text" style="display: none" name="dept_id" id="dept_id" value=""> </div> <div class="curFile"></div> </div> <div class="tip-2">可导入Excel 03及以上版本,大小不超过1M的文件,单次最多导入100条 记录,内容格式请参考员工列表导入范本.xls。初始密码为:123456 </div> </form> <div class="form-btns"> <button class="btn btn-3" id="batch_add_btn">肯定</button> </div> </div>
和别的上传同样,只是修改:enctype="multipart/form-data"。java
整个业务的关键在于,文件上传后须要解析成 HSSFWorkbook这个对象,有关于HSSFWorkbook这个的具体内容请百度。 直接上代码:缓存
//文件存放地址 String saveDirectory = System.getProperty("java.io.tmpdir").replace("\\", "/"); saveDirectory = saveDirectory.endsWith("/") ? saveDirectory : saveDirectory + "/"; saveDirectory += "fileTemp/"; //解析类的工厂 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); //文件大于临界值时存放的文件夹目录 diskFileItemFactory.setRepository(new File(saveDirectory)); //设置缓存临界值 diskFileItemFactory.setSizeThreshold(2 * 1024 * 1024); //生产一个解析类 ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory); //解析类所能放置文件的大小(在前端其实就有限制) upload.setFileSizeMax(2 * 1024 * 1024); List<JSONObject> result = new ArrayList<JSONObject>(); JSONObject reJson = null; try { //解析页面传入的全部数据, List fileItems = upload.parseRequest(request); Iterator iter = fileItems.iterator();//迭代 JSONObject textJson = new JSONObject(); //迭表明单中的每一项内容 while (iter.hasNext()) { FileItem file = (FileItem) iter.next(); //若是传入的数据是表单的数据,也就是表单中,非type=file类型的那些数据,input之类 if (file.isFormField()) { //获取到对应的一系列数据 textJson.put(file.getFieldName(), file.getString()); } else { //处理本身的业务,要存储的存储,要解析的解析 。。。。。。 } }
OK,打完收工,其实很简单,post