首页 > 代码库 > 读取excel文件

读取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的内容并且入库