martes, 5 de mayo de 2009

Copiar datos desde un Datawindow a Celdas especificas de una Hoja de Excel

El siguiente script copia todas las filas de un datawindow a un archivo de excel existente. Con esto usted puede aprender la manera de enviar datos desde una aplicación de Power Builder a celdas especificas de un archivo de excel.

El ejemplo copia la fila 1 columna 1 del datawindow a la fila1 columna1 de una hoja existente de excel, y asi con todas las celdas. Usted puede modificar este script para enviar solamente las celdas que usted necesite.



En este ejemplo se abre un archivo localizado en c:ejemplo.xls pero usted debe modificar el directorio y el nombre del archivo para que abra un archivo existente de excel en su disco duro. En la parte final del código esta la posibilidad de descomentar las funciones para guardar el archivo, o guardarlo con otro nombre.

El código es el siguiente:

long ll_numcols , ll_numrows , ll_c, ll_r
OLEObject xlapp , xlsub
int li_ret

// Coloca el número de columnas y filas a copiar
// Este script copia todo el DW pero ud puede solo copiar las celdas que desee

ll_numcols = long(dw_1.Object.DataWindow.Column.Count)
ll_numrows = dw_1.RowCount()

// Crea el oleobject en la variable xlapp
xlApp = Create OLEObject

// Se conecta a Excel y verifica el código de retorno
li_ret = xlApp.ConnectToNewObject( "Excel.Sheet" )
if li_ret < 0 then
MessageBox("Error Conectandose a Excel !",string(li_ret))
return
end if

// Abre un archivo especifico de Excel
xlApp.Application.Workbooks.Open("c:ejemplo.xls") //,false,true

// Hace Excel visible
xlApp.Application.Visible = true
xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]

// El for/next loop copia todas las filas de cada columna
For ll_c = 1 to ll_numcols
For ll_r = 1 to ll_numrows
xlsub.cells[ll_r,ll_c] = dw_1.object.data[ll_r,ll_c]
Next
Next

// Guarda el archivo abierto
//xlApp.Application.Activeworkbook.Save()

// Guarda el arvhivo con diferente nombre
//xlApp.Application.Activeworkbook.SaveAs("c:ejemplo2.xls")

// se desconecta de excel
xlApp.DisConnectObject()
Destroy xlapp

No hay comentarios:

Desarrollo - Soluciones Cabezera Animada


Ver Estadisticas