COMO CREAR UN LIBRO EXCEL DESDE SAP
Lo primero antes de todo es incluir el include correcto.
Código:
Después crearte una serie de datos/objetos dependiendo de lo que necesites hacer:
Código:
*Para crear excel
DATA: excel TYPE ole2_object.
DATA: book TYPE ole2_object.
DATA: hoja TYPE ole2_object. "hoja
DATA: rango TYPE ole2_object.
DATA: celda TYPE ole2_object.
DATA: item TYPE ole2_object.
|
Creamos el excel:
Código:
* creamos el excel
CREATE OBJECT excel 'excel.application'.
CALL METHOD OF excel 'Workbooks' = book.
* Abrimos la plantilla
CALL METHOD OF book 'Open'
EXPORTING
#1 = fichero.
* set property of excel 'visible' = 1.
|
donde fichero es la ruta a un archivo xls existente.
la linea que esta comentada "set property..." indica si queremos
ver el proceso de modificacion del excel, o lo hagamos de forma oculta.
Y una vez hecho esto vamos modificando, añadiendo cosas al excel con
los datos que queremos.
Para modificar el contenido de una celda:
Código:
*&---------------------------------------------------------------------*
*& Form rellenar_celda
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->COLUMNA text
* -->FILA text
* -->TEXTO text
*----------------------------------------------------------------------*
FORM rellenar_celda USING columna fila texto.
*rellenamos la celda
CALL METHOD OF excel 'cells' = celda
EXPORTING
#1 = fila
#2 = columna.
SET PROPERTY OF celda 'value' = texto.
FREE OBJECT celda.
ENDFORM. "rellenar_celda
|
Donde fila y columna es el tipico "C" "7", (el juego de hundir la flota vamos).
La celda que te modifica es la celda 'columna-fila' de la hoja activa.
Para seleccionar una hoja:
Código:
* Cogemos el libro
CALL METHOD OF books 'item' = book
EXPORTING
#1 = 1.
* Cogemos las hojas
CALL METHOD OF book 'sheets' = sheets.
* Cogemos la hoja que queremos
CALL METHOD OF sheets 'item' = sheet
EXPORTING
#1 = n.
* n es el numero de hoja (de izquierda a derecha segun las pestañas
* en el propio excel) empezando por 1.
|
Para crear una nueva hoja.
Te pongo un ejemplo mio y funcionando, lo que hago es,
en la primera hoja tengo una plantilla, y copio esa hoja al final.
boton derecho sobre la pestaña de la hoja-mover o copiar->(mover al final, y crear una copia) aceptar
Código:
* Seleccionamos la primera hoja (plantilla) y la movemos al final.
exporting #1 = countp.
CALL METHOD OF plantilla 'Select'.
*se crea una instancia de hoja en la ultima posicion
CALL METHOD OF excel 'Sheets' = hoja
EXPORTING
#2 = countp.
*se copia la plantilla en la hoja
CALL METHOD OF plantilla 'Copy'
EXPORTING
#1 = hoja.
FREE OBJECT hoja.
counth = countp - 1.
*cambiamos de nombre
CALL METHOD OF excel 'Sheets' = hoja
EXPORTING
#1 = countp.
CALL METHOD OF plantilla 'Select'.
SET PROPERTY OF hoja 'Name' = i_pa0001-pernr.
CALL METHOD OF excel 'Sheets' = hoja
EXPORTING
#1 = countp.
CALL METHOD OF hoja 'Select'.
*nif sociedad
PERFORM rellenar_celda USING 'C' '7' cif_soc.
...
* y voy tratando mi contador countp ya que hay q tener cuidado
* con el rango de numero que acepta. [1,n+1] n = numero de hojas
* totales... ¡¡creo!!! ya no lo recuerdo exactamente...
|
que mas.... no se, no recuerdo.
Ahora preguntarás ¿ pero de donde te has sacado todos esos nombres!!! de metodos y propiedades y eso...
Pues bien, yo lo que hago es, por cada operacion simple que quiero hacer en excel,
me grabo una macro, y despues veo el codigo que me genera.
Por ejemplo, lo de copiar una hoja al final es el siguiente codigo Visual Basic de Excel.
Código:
sub copiar_hoja()
'
' copiar_hoja macro
' '
sheets("plantilla").Select 'mi primera hoja se llama "plantilla" tambien
' valdria Sheets(1).Select y Sheets(1).Copy
Sheets("plantilla").Copy After:=Sheets(1)
End Sub
|