Api jxl

0 respostas
P

estou utlizando a api jxl para ler de uma planilha do excel dados (data - valor) e o programa java atualiza meu banco com esses dados, o problema eh que fiz um loop para que leia do programa do excel enquanto tiver dados, mas ele da um ArrayOutOfBoundsException:4, isso com 4 valores no excel, com tres valores no formato mencionado acima ele conseguia fazer toda inserção no banco, vou postar o código ele não ta com uma sintaxe boa pq ainda ta como teste:

try{
            Workbook workbook = Workbook.getWorkbook(new File("JavaExcel.xls"));
            Sheet sheet = workbook.getSheet(0);
            
            while ( sheet.getColumn(0).toString().length() > 0 & sheet.getColumn(1).toString().length() > 0){
                
                Cell a2 = sheet.getCell(ja,ia);
                Cell b2 = sheet.getCell(jb,ib);
                numberb2 = b2.getContents();
                numbera2 = a2.getContents();
                
                
                java.util.Date dt = new java.util.Date();
                
                SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
                try {
                    dt = formatador.parse(numbera2);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
                double numberB2 = Double.parseDouble(numberb2);
                
                java.sql.Date sqlDate = new java.sql.Date(dt.getTime());
                
                PreparedStatement pstmt0 = connection.prepareStatement("SELECT ID FROM TbSeries WHERE Nome = ?");
                pstmt0.setObject(1, "BRL");
                ResultSet rs0 = pstmt0.executeQuery();
                boolean ret = rs0.next();
                int IDSerie = rs0.getInt("ID");
                
                PreparedStatement pstmt1 = connection.prepareStatement("DELETE FROM TbValorSerie WHERE IDSerie = ? AND Data = ?");
                pstmt1.setInt(1, IDSerie);
                pstmt1.setDate(2, sqlDate);
                
                int rs1 = pstmt1.executeUpdate();
                
                PreparedStatement pstmt = connection.prepareStatement("INSERT INTO TbValorSerie( Data , Valor, IDSerie) VALUES ( ?, ?, ?)");
 
                pstmt.setDate(1, sqlDate);
                pstmt.setDouble(2, numberB2);
                pstmt.setInt(3, IDSerie);
                
                
                int rs = pstmt.executeUpdate();
                
                if (rs == 1){
                    System.out.println("inserção realizada\n");
                }
                
                
                //pstmt.close();
                ia++;
                ib++;
            }
            workbook.close();
        } catch (IOException e){
            e.printStackTrace();
        } catch (BiffException be){
            be.printStackTrace();
        } catch (SQLException ex){
            ex.printStackTrace();
        }         
        
    }

essa eh parte que realmente importa.Dentro do while fiz a condição do loop que pelo jeito num ta valendo!
alguém tem alguma idéia??

Criado 31 de janeiro de 2007
Respostas 0
Participantes 1