• java操作Excel之POI(6)使用POI实现使用模板批量添加数据


    action是用struts2写的;前端界面easyUI写的,

    前端:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Basic DataGrid - jQuery EasyUI Demo</title>
     6     <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/default/easyui.css">
     7     <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/icon.css">
     8     <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.min.js"></script>
     9     <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
    10     <script type="text/javascript" src="jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
    11     <script>
    12         //批量导入数据,打开dialog
    13         function openUploadFileDialog(){
    14             $("#dlg2").dialog('open').dialog('setTitle','批量导入数据');
    15         }
    16         
    17         //下载批量导入模板
    18         //userExporTemplate.xls位于WebContent/template/下面
    19         //一个纯的js来下载模板
    20         function downloadTemplate(){
    21             window.open('template/userExporTemplate.xls');
    22         }
    23         
    24         //上传Excel文件,交给后台解析
    25         //其中uploadForm的action=user!upload
    26         function uploadFile(){
    27             $("#uploadForm").form("submit",{
    28                 success:function(result){
    29                     var result=eval('('+result+')');
    30                     if(result.errorMsg){
    31                         $.messager.alert("系统提示",result.errorMsg);
    32                     }else{
    33                         $.messager.alert("系统提示","上传成功");
    34                         $("#dlg2").dialog("close");
    35                         $("#dg").datagrid("reload");
    36                     }
    37                 }
    38             });
    39         }
    40     </script>
    41 </head>
    42 <body>
    43     <!-- 一排操作按钮 -->
    44     <div id="toolbar">
    45         <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-import" plain="true" onclick="openUploadFileDialog()">用模版批量导入数据</a>
    46     </div>
    47     
    48     <!-- 批量导入数据模板Excel 的dialog -->
    49     <div id="dlg2" class="easyui-dialog" style="400px;height:180px;padding:10px 20px"
    50             closed="true" buttons="#dlg-buttons2">
    51         <form id="uploadForm" action="user!upload" method="post" enctype="multipart/form-data">
    52             <table>
    53                 <tr>
    54                     <td>下载模版:</td>
    55                     <td><a href="javascript:void(0)" class="easyui-linkbutton"  onclick="downloadTemplate()">导入模版</a></td>
    56                 </tr>
    57                 <tr>
    58                     <td>上传文件:</td>
    59                     <td><input type="file" name="userUploadFile"></td>
    60                 </tr>
    61             </table>
    62         </form>
    63     </div>
    64     
    65     <div id="dlg-buttons2">
    66         <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">上传</a>
    67         <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a>
    68     </div>
    69 </body>
    70 </html>
    View Code

    后端:

    UserAction中upload方法:

     1 public class UserAction extends ActionSupport{
     2 
     3     private File userUploadFile;    //用来接收上传的文件
     4 
     5     public File getUserUploadFile() {
     6         return userUploadFile;
     7     }
     8     public void setUserUploadFile(File userUploadFile) {
     9         this.userUploadFile = userUploadFile;
    10     }
    11 
    12     /**
    13     *    上传文件,解析Excel
    14     */
    15     public String upload() throws Exception{
    16         POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(userUploadFile));
    17         HSSFWorkbook wb = new HSSFWorkbook(fs);
    18         HSSFSheet hssfSheet =  wb.getSheetAt(0);     //获取第一个sheet页
    19         if(hssfSheet != null){
    20             for(int rowNum=1; rowNum<=hssfSheet.getLastRowNum(); rowNum++){
    21                 HSSFRow hssfRow = hssfSheet.getRow(rowNum);
    22                 if(hssfRow == null){
    23                     continue;
    24                 }
    25                 User user = new User();
    26                 user.setName(ExcelUtil.formatCell(hssfRow.getCell(0)));
    27                 user.setPhone(ExcelUtil.formatCell(hssfRow.getCell(1)));
    28                 user.setEmail(ExcelUtil.formatCell(hssfRow.getCell(2)));
    29                 user.setQq(ExcelUtil.formatCell(hssfRow.getCell(3)));
    30                 Connection conn = null;
    31                 try{
    32                     con=dbUtil.getCon();
    33                     userDao.userAdd(con, user);
    34                 }catch(Exception e){
    35                     e.printStackTrace();
    36                 }finally{
    37                     dbUtil.closeCon(con);
    38                 }
    39             }
    40         }
    41         JSONObject result=new JSONObject();
    42         result.put("success", "true");
    43         ResponseUtil.write(ServletActionContext.getResponse(), result);
    44         return null;
    45     }
    46 
    47 }

    对单元格进行分类处理(String、boolean、number)的ExcelUtil:

     1 /**
     2 *    处理Excel的util
     3 */
     4 public class ExcelUtil{
     5 
     6     /**
     7     *    传入Cell,根据Cell的类型转化,返回的都是String
     8     */
     9     public static String formatCell(HSSFCell hssfCell){
    10         if(hssfCell == null){
    11             return "";
    12         }else{
    13             if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){    
    14                 return String.valueOf(hssfCell.getBooleanCellValue());
    15             }else if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
    16                 return String.valueOf(hssfCell.getNumericCellValue());
    17             }else{
    18                 return String.valueOf(hssfCell.getStringCellValue());
    19             }
    20         }
    21     } 
    22 
    23 }

    图:

  • 相关阅读:
    雅虎天气接口
    解决activeandroid no such table
    解决Genymotion Error: “Unable to load VirtualBox Engine” on Yosemite. VirtualBox installed
    存金宝 价格提示
    添加 SSH 公钥
    ImportError: No module named flask.ext.wtf 解决方法
    Cannot fetch index base URL https://pypi.python.org/pypi/ 解决方法
    mac下只遍历目录不遍历文件
    dubbo源代码编译打包错误解决
    maven 基本配置
  • 原文地址:https://www.cnblogs.com/tenWood/p/6427143.html
Copyright © 2020-2023  润新知