利用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()"/>&nbsp;
                        <input type="button" value="删除" class="s_button" onclick="doDeleteAll()"/>&nbsp;
                        <input type="button" value="导出" class="s_button" onclick="doExportExcel()"/>&nbsp;
                        <input name="userExcel" type="file"/>
                        <input type="button" value="导入" class="s_button" onclick="doImportExcel()"/>&nbsp;

                    </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 页 &nbsp;&nbsp;
                            <a href="#">上一页</a>&nbsp;&nbsp;<a href="#">下一页</a>
                    到&nbsp;<input type="text" style="width: 30px;" onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
                    max="" value="1" /> &nbsp;&nbsp;
                </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

时间: 2024-10-12 21:16:47

利用Excel导入用户列表(POI)的相关文章

【SSH项目实战】国税协同平台-7.POI导入用户列表文件

上次我们使用POI技术完成了用户列表的打印工作,下面我们来完成用户列表Excel文件的导入. 我们要导入这个Excel文件到我们的系统中: 确切的说,是我们要将excel中的数据导入到数据库中保存起来 我们的操作过程: 1.获取excel文件 2.导入 2.1.读取工作簿 2.2.读取工作表 2.3.读取行 2.4.读取单元格 2.5.保存用户 下面我们来进行具体的实现工作 我们在用户列表的jsp页面中可以看到还有一个"导出"的按钮, <input type="butt

POI实现excel导入导出

1.分析excel import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.Ce

[Utils]POI实现excel导入导出

1.分析excel 2.poi工具类 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.s

SSH系列:(11)用户管理-Excel导入、导出

这里用了POI组件,需要引入的jar包有: curvesapi-1.03.jar poi-3.14-20160307.jar poi-ooxml-3.14-20160307.jar poi-ooxml-schemas-3.14-20160307.jar xmlbeans-2.6.0.jar 参考: POI组件:POI操作Excel http://lsieun.blog.51cto.com/9210464/1836601 1.用户列表导出成Excel 1.1.listUI.jsp UI部分 <in

一个基于POI的通用excel导入导出工具类的简单实现及使用方法

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴.经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式.于是提供了一个通用excel模版的下载功能.当所有客户用模版录入好数据再上传到系统,后端对excel进行解析,然后再持久化到数据库. 概述: 此工具类的几大特点 1.基本导入导出

POI操作Excel导入和导出

Apache的POI组件是Java操作Microsoft Office办公套件的强大API,当中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel.由于Word和PowerPoint用程序动态操作的应用较少.那么本文就结合POI来介绍一下操作Excel的方法. 这里介绍两种方法实现excel的操作.代码都有凝视,能够非常清楚的看懂,一种是循环遍历excel表格.这个要自己定位一个excel的起点.第二种是通过java反射机制实现的,依据表头来实现映射. 详细代码

利用反射实现通用的excel导入导出

如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.ou

.net mvc利用NPOI导入导出excel

1.导出Excel : 首先引用NPOI包,从这里下载>download (Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> /// <returns></returns> public FileResult ExportStu2() { //获取list数据 var checkList = (from oc in db.OrganizeCustoms join o i

【Listener】利用监听器Listener以MVC的思想通过JSP+Servlet+JDBC完成在线用户列表的输出

Servlet,监听器Listener与<[Filter]拦截器Filter>(点击打开链接)是JSP的三大核心组件,实际上监听器Listener相当于数据库里面的触发器,一旦用户触发了某种行为,则可以通过相关的Java文件执行相应的程序.用户在浏览网页的过程中,主要有打开浏览器的动作,对应的行为是Session的创建,可是,用户关闭浏览器的动作,并不是对应Session的消失,因此对于Session的消失我们意义不大:访问任意网页的动作,对应的行为是request请求的创建,request的