Ver Mensaje Individual
  #1  
Viejo 20/09/11, 14:51:30
Edgar89 Edgar89 is offline
Junior Member
 
Fecha de Ingreso: sep 2011
Mensajes: 6
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_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..
Responder Con Cita