利用Excel导入用户列表(POI)
Posted 太快的幸福,措手不及
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Excel导入用户列表(POI)相关的知识,希望对你有一定的参考价值。
1.jsp页面的代码(和上一个导出的实例是同一个)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>用户管理</title> <%@include file="/common/header.jsp" %> <script type="text/javascript"> //全选、全反选 function doSelectAll(){ // jquery 1.6 前 //$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked")); //prop jquery 1.6+建议使用 $("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked")); } //添加 function doAdd(){ document.forms[0].action="${basePath}nsfw/user_addUI.action"; document.forms[0].submit(); } //编辑 function doEdit(id){ document.forms[0].action="${basePath}nsfw/user_editUI.action?user.id=" + id; document.forms[0].submit(); } //删除 function doDelete(id){ document.forms[0].action="${basePath}nsfw/user_delete.action?user.id=" + id; document.forms[0].submit(); } //多选删除 function doDeleteAll(){ document.forms[0].action="${basePath}nsfw/user_deleteSelected.action"; document.forms[0].submit(); } //用户列表导出 function doExportExcel(){ window.open("${basePath}nsfw/user_exportExcel.action"); } //用户列表导入 function doImportExcel(){ document.forms[0].action="${basePath}nsfw/user_importExcel.action"; document.forms[0].submit(); } </script> </head> <body class="rightBody"> <form name="form1" action="" method="post" enctype="multipart/form-data"> <div class="p_d_1"> <div class="p_d_1_1"> <div class="content_info"> <div class="c_crumbs"><div><b></b><strong>用户管理</strong></div> </div> <div class="search_art"> <li> 用户名:<s:textfield name="user.name" cssClass="s_text" id="userName" cssStyle="width:160px;"/> </li> <li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li> <li style="float:right;"> <input type="button" value="新增" class="s_button" onclick="doAdd()"/> <input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/> <input type="button" value="导出" class="s_button" onclick="doExportExcel()"/> <input name="userExcel" type="file"/> <input type="button" value="导入" class="s_button" onclick="doImportExcel()"/> </li> </div> <div class="t_list" style="margin:0px; border:0px none;"> <table width="100%" border="0"> <tr class="t_tit"> <td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td> <td width="140" align="center">用户名</td> <td width="140" align="center">帐号</td> <td width="160" align="center">所属部门</td> <td width="80" align="center">性别</td> <td align="center">电子邮箱</td> <td width="100" align="center">操作</td> </tr> <s:iterator value="userList" status="st"> <tr <s:if test="#st.odd">bgcolor="f8f8f8"</s:if> > <td align="center"><input type="checkbox" name="selectedRow" value=‘<s:property value="id"/>‘/></td> <td align="center"><s:property value="name"/></td> <td align="center"><s:property value="account"/></td> <td align="center"><s:property value="dept"/></td> <td align="center"><s:property value="gender?‘男‘:‘女‘"/></td> <td align="center"><s:property value="email"/></td> <td align="center"> <a href="javascript:doEdit(‘<s:property value="id"/>‘)">编辑</a> <a href="javascript:doDelete(‘<s:property value="id"/>‘)">删除</a> </td> </tr> </s:iterator> </table> </div> </div> <div class="c_pate" style="margin-top: 5px;"> <table width="100%" class="pageDown" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="right"> 总共1条记录,当前第 1 页,共 1 页 <a href="#">上一页</a> <a href="#">下一页</a> 到 <input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1" max="" value="1" /> </td> </tr> </table> </div> </div> </div> </form> </body> </html>
2.控制器(Action)的核心代码
//导入用户列表 public String importExcel(){ //获取excel文件 if(userExcel != null){ //是否为excel if(userExcelFileName.matches("^.+\\.(?i)((xls)|(xlsx))$")){ //导入 userService.importExcel(userExcel,userExcelFileName); } } return "list"; }
3.逻辑处理(service)部分代码
@Override public void importExcel(File userExcel, String userExcelFileName) { try { FileInputStream fileInputStream = new FileInputStream(userExcel); boolean is03Excel = userExcelFileName.matches("^.+\\.(?i)(xls)$"); //1.读取工作簿 Workbook workbook = is03Excel ? new HSSFWorkbook(fileInputStream) : new XSSFWorkbook(fileInputStream); //2.读取工作表 Sheet sheet = workbook.getSheetAt(0); //3.读取行 if(sheet.getPhysicalNumberOfRows() > 2){ User user = null; for(int i =2;i<sheet.getPhysicalNumberOfRows();i++){ //4.读取单元格 Row row = sheet.getRow(i); user = new User(); //用户名 Cell cell1 = row.getCell(0); user.setName(cell1.getStringCellValue()); //账号 Cell cell2 = row.getCell(1); user.setAccount(cell2.getStringCellValue()); //所属部门 Cell cell3 = row.getCell(2); user.setDept(cell3.getStringCellValue()); //性别 Cell cell4 = row.getCell(3); user.setGender(cell4.getStringCellValue().equals("男")); //手机号 String mobile = ""; Cell cell5 = row.getCell(4); try { mobile = cell5.getStringCellValue(); } catch (Exception e) { double dMobile = cell5.getNumericCellValue(); mobile= BigDecimal.valueOf(dMobile).toString(); } user.setMobile(mobile); //电子邮箱 Cell cell6 = row.getCell(5); user.setEmail(cell6.getStringCellValue()); //生日 Cell cell7 = row.getCell(6); if (cell7.getDateCellValue() != null) { user.setBirthday(cell7.getDateCellValue()); } //默认用户密码 user.setPassword("123456"); //默认用户状态为有效 user.setState(user.USER_STATE_VALID); //保存用户 save(user); } } workbook.close(); fileInputStream.close(); } catch (Exception e) { e.printStackTrace(); } }
4.上一个导出的例子没有贴出struts2的跳转配置,这个贴出来
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="user-action" namespace="/nsfw" extends="struts-default"> <action name="user_*" class="cn.buaa.nsfw.user.action.UserAction" method="{1}"> <result name="{1}">/WEB-INF/jsp/nsfw/user/{1}.jsp</result> <result name="list" type="redirectAction"> <param name="actionName">user_listUI</param> </result> </action> </package> </struts>
5.导入的excel
以上是关于利用Excel导入用户列表(POI)的主要内容,如果未能解决你的问题,请参考以下文章