zoukankan      html  css  js  c++  java
  • 读取excel文件

     public int importExcel(String path,int type){
            if(mark==false){
                return 0;
            }else
            try{
                 POIFSFileSystem fs;    
                 HSSFWorkbook book;
                fs = new POIFSFileSystem(new FileInputStream(new File(path)));  
                book = new HSSFWorkbook(fs);        
                //  获得第一个工作表对象 
                HSSFSheet sheet = book.getSheetAt(0);
                String temp=path.substring(path.lastIndexOf("\")+1,path.indexOf("."));  
                String location=temp.substring(0,temp.indexOf("_"));   //赛事名称
                String matchType=temp.substring(temp.indexOf("_")+1); //获得比赛类型
                //检验文件名是否正确
                if(matchType.equals("预赛")){
                    matchType="0";
                }else if(matchType.equals("决赛")){
                    matchType="1";
                }else 
                    return 1;
                //插入数据的代码
                String sql;
                if(type==0){
                     //检验该文件中的比赛名称是否在数据库中已经存在,如果存在,查找团体分数表,判断是否有该赛事名称,如果有,通知用户不可更新,如果没有,删除团体信息表已有重复的数据的,重新入库
                    String deleteSql="delete from web_json where match_name=? and final_preliminary=?";
                    String deleteMatchOrderSql="delete from match_order where match_name=? and final_preliminary=?";
                    String checkScore="select b.* from match_order as a,score as b where a.id=b.team_id and a.match_name=?";
                    String checkSql="select * from match_order where match_name=? and final_preliminary=?";
                    st=conn.prepareStatement(checkSql);
                    st.setString(1, location);
                    st.setString(2, matchType);
                    ResultSet rs=st.executeQuery();
                    //已存在数据
                    if(rs.next()){
                        //判断打分表中是否已经有了这个数据,如果有的话提示用户,不能覆盖
                        st=conn.prepareStatement(checkScore);
                        st.setString(1, location);
                        rs=st.executeQuery();
                        if(rs.next()){
                           return 5;     //告知用户不能修改,已经进行了比赛
                        }else{
                             st=conn.prepareStatement(deleteMatchOrderSql);
                             st.setString(1, location);
                             st.setString(2, matchType);
                             st.execute();
                        }               
                    } 
                    st=conn.prepareStatement(deleteSql);
                       st.setString(1, location);
                    st.setString(2, matchType);
                       st.execute();
                }else if(type==1){  //当附加数据时,先判断是否有该赛事名称,如果没有提醒用户
                    String checkSql="select * from web_json where match_name=? and final_preliminary=?";
                    st=conn.prepareStatement(checkSql);
                    st.setString(1, location);
                    st.setString(2, matchType);
                    ResultSet rs=st.executeQuery();
                    if(!rs.next()){
                        return 6;   //提醒用户信息表中没有该赛事,不能够进行附加
                    }
                }
                //没有存在,直接将数据导入数据库
    
                sql="insert into web_json (match_category,match_units,team_name,match_name,final_preliminary,sort_flag,player_name)values(?,?,?,?,?,?,?)";
               
              //将数据直接插入的过程
                conn.setAutoCommit(false);
                st=conn.prepareStatement(sql);
                // 得到总行数        
                int rowNum = sheet.getLastRowNum();        
               HSSFRow row = sheet.getRow(0);        
                // 正文内容应该从第二行开始,第一行为表头的标题       
                for (int i = 1; i <= rowNum; i++) {           
                    row = sheet.getRow(i);  
                    HSSFCell cell=row.getCell((short)0);
                    HSSFCell cell2=row.getCell((short)1);
                    HSSFCell cell3=row.getCell((short)2);
                    HSSFCell cell4=row.getCell((short)3);
                    if(cell==null||cell2==null||cell3==null||cell4==null){
                        return 1;                    
                    }else{
                        //将第一列的数据放进st中
                        st.setString(1,cell.getStringCellValue());   //参赛项目
                        //将第二列的数据放进st中
                        st.setString(2, cell2.getStringCellValue());  //参赛单位
                        st.setString(3,cell3.getStringCellValue());    //队伍名称
                        st.setString(4, location);
                        st.setInt(5, Integer.valueOf(matchType));
                         st.setInt(6, 0);
                         st.setString(7, cell4.getStringCellValue());    //姓名
                    }
                    st.addBatch();
                    if(i>1000){
                        int[] result=st.executeBatch();
                        for(int k:result){
                            if(k<0){
                                return 3;
                            }
                        }
                    }     
     
                }
                int[] result=st.executeBatch();
                for(int k:result){
                    if(k<0){
                        return 3;
                    }
                }
                conn.commit();
                return 2;
            }catch (NumberFormatException e){
                e.printStackTrace();
                return 1;
            }catch(Exception e){
                e.printStackTrace();
                return 4;
            }

    以上主要通过poi来读取excel的内容并且入库

  • 相关阅读:
    自定义view代码
    省份封装代码
    监听锁屏广播,开启1个像素的Activity
    双进程守护
    新增,查询,删除,修改下方即可
    #Android笔记#解决textview使用SpannableString实现图文混排并设置了行高时,图片与文字显示混乱
    显示地图
    局部页面传值Model
    JS的跳转
    helper实现隐藏前台特效
  • 原文地址:https://www.cnblogs.com/sandyflower/p/3895081.html
Copyright © 2011-2022 走看看