#1
|
|||
|
|||
OLE & ABAP: con visible = 0, ¿dónde lo guarda?
Hola!!
Estoy trabajando con OLE & ABAP con un fichero excel. Si le pongo set property of e_appl 'VISIBLE' = 1. deja el fichero excel abierto. En cambio, si le pongo set property of e_appl 'VISIBLE' = 0. no abre el fichero. Esto es lo que quiero porque el proceso es en fondo y el usuario no tiene que verlo, pero además me gustaría especificarle una ruta en donde me guardara el fichero excel. No se si me he explicado. Más o menos és: créame este fichero excel en visible = 0 y guardalo en c:\temp\... ¿Alguien sabe hacerlo? Muchas gracias de antemano, Jordi. |
#2
|
|||
|
|||
guardando excel
Hola,
tendrías que agregar en tu codigo: DATA: nro_hoja TYPE i, hoja TYPE OLE2_OBJECT, e_appl TYPE OLE2_OBJECT. .... CALL METHOD OF e_appl 'Worksheets' = hoja EXPORTING #1 = Nro_hoja. * Luego de hacer todo lo q tengas q hacer con el archivo excel, guardas... CALL METHOD OF hoja 'SaveAs' EXPORTING #1 = W_PATH #2 = 1. en donde W_path seria la ruta donde quieres q se guarde C:\data\archivo.xls espero q esto te sirva salu2 |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
Hola MEG30,
si quieres ganar velocidad, primero debes ocultar el progreso d llenado d la hoja d excel, es decir, donde pones ... visible = '1', cambialo por '0' y justo antes del Save, regresalo a '1'. Lo otro q dices, de abrir un archivo con datos llenos y solo actualizar formatos también se puede hacer, fíjate en el siguiente ejemplo q está detallado: Espero q esta info te sirva y si tienes alguna otra duda, intentaremos ayudarte
__________________
Jaime Zegarra V. ________________ ABAP Developer |
Herramientas | Buscar en Tema |
Desplegado | |
|
|