Verificar contenido de celdas Excel con POI Java

Iniciado por IntoxicKat, 9 Enero 2010, 02:03 AM

0 Miembros y 1 Visitante están viendo este tema.

IntoxicKat

Hola a todos.

Tengo un problema al tratar de leer una columna de excel.

Lo que quiero hacer es leer todo el contenido de la columna y al llegar a una celda sin contenido, detener la lectura.

Como puedo verificar o comprobar que una celda de mi columna esta vacia y entonces dejar de intentar leer celdas?


Asi le hago.
   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        int X = 6;
        int Y = 3;
        int a = 0;
        boolean Run = true;

        try
        {
             //Abrir Archivo de MICROSOFT a analizar.
        POIFSFileSystem fs =
                new POIFSFileSystem(
                    new FileInputStream("C:/Documents and Settings/sistemas/Escritorio/excel/gpotecq21.xls"));

        //Se obtiene libro de Excel.
        HSSFWorkbook LibroAnalizar = new HSSFWorkbook(fs);

        //Se obtiene la primera hoja de el libro a analizar.
        HSSFSheet HojaAnalizar = LibroAnalizar.getSheetAt(0);

        //Se declara variable para la celda.
        HSSFCell CeldaLibroAnalizar;
        HSSFRow FilaLibroAnalizar;

        //Se recorre Columna de "DIFERENCIA".
       // do {
        System.out.println("Entrando al while");

          while (Run == true) {         
            //Se obtiene la fila 4 para comenzar a analizar.
            FilaLibroAnalizar = HojaAnalizar.getRow(Y);

            //Se lee toda la columna de "DIFERENCIAS" para analizar.
            CeldaLibroAnalizar = FilaLibroAnalizar.getCell((short)X);
            //System.out.println("CELDA " +Y +"  " +CeldaLibroAnalizar);
            System.out.println("Entre While y switch");

            switch(CeldaLibroAnalizar.getCellType())
            {
                case HSSFCell.CELL_TYPE_NUMERIC:
                    System.out.println("Celda Numeric " +Y +" " +CeldaLibroAnalizar);
                    Y = Y + 1;
                    break;
                case HSSFCell.CELL_TYPE_STRING:                   
                    System.out.println("Celda String " +Y +" " +CeldaLibroAnalizar);
                     Run = false;
                    break;
                    default:
                        Run = false;
                        break;
            }
            //a = CeldaLibroAnalizar.getCellType();
            //System.out.println("Valor de a: " +a);
           
       // } //Fin Do
            System.out.println("fin Switch.");     
         
             } //Fin While
        System.out.println("Fin del WHILE");
        }
        catch(IOException e)
        {
            System.out.println("Error al leer el fichero!");
        }
         System.out.println("Fuera del try");
    }

Saludos a todos.



Blitzkrieg'

Código (java) [Seleccionar]
   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        int X = 6;
        int Y = 3;
        int a = 0;
        boolean Run = true;

        try
        {
             //Abrir Archivo de MICROSOFT a analizar.
        POIFSFileSystem fs =
                new POIFSFileSystem(
                    new FileInputStream("C:/Documents and Settings/sistemas/Escritorio/excel/gpotecq21.xls"));

        //Se obtiene libro de Excel.
        HSSFWorkbook LibroAnalizar = new HSSFWorkbook(fs);

        //Se obtiene la primera hoja de el libro a analizar.
        HSSFSheet HojaAnalizar = LibroAnalizar.getSheetAt(0);

        //Se declara variable para la celda.
        HSSFCell CeldaLibroAnalizar;
        HSSFRow FilaLibroAnalizar;

        //Se recorre Columna de "DIFERENCIA".
       // do {
        System.out.println("Entrando al while");

          while (Run == true) {         
            //Se obtiene la fila 4 para comenzar a analizar.
            FilaLibroAnalizar = HojaAnalizar.getRow(Y);

            //Se lee toda la columna de "DIFERENCIAS" para analizar.
            CeldaLibroAnalizar = FilaLibroAnalizar.getCell((short)X);
            //System.out.println("CELDA " +Y +"  " +CeldaLibroAnalizar);
            System.out.println("Entre While y switch");

            switch(CeldaLibroAnalizar.getCellType())
            {
                case HSSFCell.CELL_TYPE_NUMERIC:
                    System.out.println("Celda Numeric " +Y +" " +CeldaLibroAnalizar);
                    Y = Y + 1;
                    break;
                case HSSFCell.CELL_TYPE_STRING:                   
                    System.out.println("Celda String " +Y +" " +CeldaLibroAnalizar);
                     Run = false;
                    break;
                    default:
                        Run = false;
                        break;
            }
            //a = CeldaLibroAnalizar.getCellType();
            //System.out.println("Valor de a: " +a);
           
       // } //Fin Do
            System.out.println("fin Switch.");     
         
             } //Fin While
        System.out.println("Fin del WHILE");
        }
        catch(IOException e)
        {
            System.out.println("Error al leer el fichero!");
        }
         System.out.println("Fuera del try");
    }


Recuerda usar las etiquetas code.



Debci

No me gusta nada el condicional del while, es infinito y eso peude acarrear perdida de control del programa, podrias usar otro tipo de metods, como un for con el numero de rows que hay.

Saludos