Ver Mensaje Individual
  #3  
Viejo 05/06/09, 14:17:07
MEG30 MEG30 is offline
Junior Member
 
Fecha de Ingreso: oct 2008
Mensajes: 4
Question Modificar archivo excel existente

Hola:
Hice un programa que copia un txt almacenado en servidor de sap y genera un archivo ecxel y lo guarda en forma local. El problema es que, o es un error mío con el código(lo adjunto abajo), o realmente es así, para 4 registros tarda 16 segundos, hablando de pruebas en desarrollo con pocos datos, lo cual es demasiado lento. El archivo txt original tiene más de 5 mil registros. Lo probé con ole2 porque el cliente quiere que la primer hoja tenga el nombre de "EtiquetasNuevas" en lugar de Hoja1 y formato texto para las columnas 1 y 3, esto es porque la coluna 1 tiene un número de material(MATNR), que con formato general un numero '802313203000' lo pone así '802313E+11'. El cliente tiene un software de impresión de etiquetas que reconoce archivos excel con el formato antes mencionado. Por tema de lentitud quiero descargar a excel con una función pero no puedo con función dar nombre a la primer hoja ni formato texto a las columnas 1 y 3. La consulta es: ¿es posible abrir un archivo excel ya almacenado y cambiarle con ole2 el nombre a la hoja y dar formato texto a las columnas antes mencionadas? hablamos de con un describe table tener la cantidad de filas y ya sabemos la cantidad de columnas. Muchas gracias por tu ayuda.



*&---------------------------------------------------------------------*
*& Form F_GUARDA_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form f_guarda_excel.

field-symbols: <fs_table> type any table,
<fs_line> type ty_file,
<fs_data> type any.

data v_filename type rlgrap-filename.
clear v_filename.
move p_path to v_filename.
************************************************************************
* Declaraciones para la llamada a EXCEL.
data: o_hoja_excel type ole2_object,
o_excel type ole2_object,
o_libro type ole2_object,
o_ole_sheets type ole2_object,
o_activesheet type ole2_object,
o_cell type ole2_object,
o_libros_trabajo type ole2_object,
o_l_lineas(10) type c,
o_rango type ole2_object,
v_line type i.

assign t_file to <fs_table>.

* Se crea el objeto Hoja Excel.
create object o_excel 'EXCEL.APPLICATION'.
* Se hace visible la aplicación Excel
set property of o_excel 'VISIBLE' = 1.
call method of o_excel 'WORKBOOKS' = o_libros_trabajo.
call method of o_libros_trabajo 'Add' = o_libros_trabajo.
get property of o_excel 'ActiveSheet' = o_activesheet.
set property of o_activesheet 'Name' = 'EtiquetasNuevas'.

clear v_line.
loop at <fs_table> assigning <fs_line>.
v_line = v_line + 1.

do.
assign component sy-index of structure <fs_line> to <fs_data>.

if sy-subrc ne 0.
exit.
endif.

call method of o_activesheet 'Cells' = o_cell
exporting
#1 = v_line
#2 = sy-index.

IF SY-INDEX EQ 1 OR SY-INDEX EQ 3.
set property of o_cell 'NUMBERFORMAT' = '@'.
ENDIF.

set property of o_cell 'Value' = <fs_data>.
set property of o_cell 'ColumnWidth' = 20.

enddo.

endloop.


call method of o_libros_trabajo 'SAVEAS'
exporting #1 = v_filename. "path de archivo como c:\Etiquetas.xls
call method of o_libros_trabajo 'close'.
* call method of o_excel 'QUIT'.
free object: o_excel,
o_libros_trabajo,
o_cell,
o_activesheet.

endform. " F_GUARDA_EXCEL
Responder Con Cita