Ayuda para leer archivo excel con sus pestañas!!

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Edgar89
    Junior Member
    • sep
    • 6

    #1

    Ayuda para leer archivo excel con sus pestañas!!

    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_cont rol
    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..
  • kibo
    Senior Member
    • may
    • 177

    #2
    la verdad que es raro es problema que tienes... yo una vez sola tuve que realizar eso y me base en el link:



    pero no podria asesorarte sobre el problema que tienes
    http://diariotitular.com/contacto/

    Comentario

    • kibo
      Senior Member
      • may
      • 177

      #3
      Recien veo que estuviste comentando en ese foro... si ahi no te pueden ayudar estas al horno con papas :P
      http://diariotitular.com/contacto/

      Comentario

      • Edgar89
        Junior Member
        • sep
        • 6

        #4
        ah ok gracias.., y pues si, con esa otra funcion el problema que me genero es que si el archivo era muy grande, mostraba algunas advertencias de excel, que si si se habia dejado gran cantidad de datos en el portapapeles y tal, cosas asi y pss por eso decidi usar esta otra...

        Comentario

        Trabajando...