Autor Tema: Ayuda para leer archivo excel con sus pestañas!!  (Leído 4160 veces)

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

Desconectado edgar0889

  • Novato
  • *
  • Mensajes: 8
    • Ver Perfil
Ayuda para leer archivo excel con sus pestañas!!
« en: 20 de Septiembre de 2011, 03:51:43 pm »
Buenos dias, estoy leyendo un archivo excel con distintas pestañas, generalmente lo hace correctamente, pero en ocasiones si el archivo se crea de la forma copiar y pegar, ocurre que el programa agarra la pestaña que este activa y la replica de acuerdo al numero de pestañas que vaya a leer, ejemplo, si quiero leer un archivo con 3 pestañas, y la pestaña activa tenia como texto "hola", el programa me va a cargar el archivo como si en las 3 pestañas estuviese escrito la palabra "hola", ojo esto solo ocurre cuando el archivo se crea copinado y pegando, y pss necesito corregir esto, ps en ocasiones el archivo a cargar seguramente se haya formado copinado y pegando...si alguien me puede ayudar se lo agradeceriaa..aqui les dejo el codigo con los metodos que uso para cargar el archivo...:

 contador = 1.
            p_rows = 3000.
            p_cols = 10.

        CALL METHOD c_oi_container_control_creator=>get_container_control
              IMPORTING
                control = iref_control
                error   = iref_error.
            IF iref_error->has_failed = 'X'.
              CALL METHOD iref_error->raise_message
                EXPORTING
                  type = 'E'.
            ENDIF.


            CREATE OBJECT oref_container
              EXPORTING
                container_name              = 'CONT'
              EXCEPTIONS
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5
                OTHERS                      = 6.
            IF sy-subrc <> 0.
              MESSAGE e001(00) WITH 'Error al crear container'.
            ENDIF.

            CALL METHOD iref_control->init_control
              EXPORTING
                inplace_enabled      = 'X'
                r3_application_name  = 'EXCEL CONTAINER'
                parent               = oref_container
              IMPORTING
                error                = iref_error
              EXCEPTIONS
                javabeannotsupported = 1
                OTHERS               = 2.
            IF iref_error->has_failed = 'X'.
              CALL METHOD iref_error->raise_message
                EXPORTING
                  type = 'E'.
            ENDIF.

            CALL METHOD iref_control->get_document_proxy
              EXPORTING
                document_type  = soi_doctype_excel_sheet
              IMPORTING
                document_proxy = iref_document
                error          = iref_error.
            IF iref_error->has_failed = 'X'.
              CALL METHOD iref_error->raise_message
                EXPORTING
                  type = 'E'.
            ENDIF.

            CONCATENATE 'FILE://' p_file INTO v_document_url.

            CALL METHOD iref_document->open_document
              EXPORTING
                document_title = 'Excel'
                document_url   = v_document_url
                open_inplace   = 'X'
              IMPORTING
                error          = iref_error.
            IF iref_error->has_failed = 'X'.
              MESSAGE e000(38) WITH 'Error al Leer el Archivo'.
            ENDIF.

            CALL METHOD iref_document->get_spreadsheet_interface
              EXPORTING
                no_flush        = ' '
              IMPORTING
                error           = iref_error
                sheet_interface = iref_spreadsheet.

            IF iref_error->has_failed = 'X'.
              CALL METHOD iref_error->raise_message
                EXPORTING
                  type = 'I'.
              LEAVE LIST-PROCESSING.
            ENDIF.


            CALL METHOD iref_spreadsheet->get_sheets
              EXPORTING
                no_flush = ' '
              IMPORTING
                sheets   = i_sheets
                error    = iref_error.
            IF iref_error->has_failed = 'X'.
              CALL METHOD iref_error->raise_message
                EXPORTING
                  type = 'I'.
              LEAVE LIST-PROCESSING.
            ENDIF.
            CLEAR p_file.
            contador = 1.

            " LOOP para recorrer cada una de las pestañas que contiene el archivo de Excel.
            LOOP AT i_sheets INTO wa_sheets.

              TRANSLATE wa_sheets-sheet_name to upper case.

                it_pestanascontrol-nombre = wa_sheets-sheet_name.
                it_pestanascontrol-numero = contador.
                add 1 to contador.
                APPEND it_pestanascontrol.


              CALL METHOD iref_spreadsheet->select_sheet
                EXPORTING
                  name  = wa_sheets-sheet_name
                IMPORTING
                  error = iref_error.
              IF iref_error->has_failed = 'X'.
                EXIT.
              ENDIF.
              CALL METHOD iref_spreadsheet->set_selection
                EXPORTING
                  top     = 1
                  left    = 1
                  rows    = p_rows
                  columns = p_cols.

              CALL METHOD iref_spreadsheet->insert_range
                EXPORTING
                  name     = 'Test'
                  rows     = p_rows
                  columns  = p_cols
                  no_flush = ''
                IMPORTING
                  error    = iref_error.
              IF iref_error->has_failed = 'X'.
                EXIT.
              ENDIF.

              REFRESH i_data.

              CALL METHOD iref_spreadsheet->get_ranges_data
                EXPORTING
                  all      = 'X'
                IMPORTING
                  contents = i_data
                  error    = iref_error
                CHANGING
                  ranges   = i_ranges.
          REFRESH it_fianzasl.
          ENDLOOP.

El ultimo metodo es el que se encarga de leer el contenido de la pestaña, nos e si deba limpiar algun dato antes de llamarlo o cual sera la razon por la cual se me presenta este error, si alguien me puede ayudar se la agradeceria mucho..;)