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="width: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 }

 

图:

转载于:https://www.cnblogs.com/tenWood/p/6427143.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值