Está en la página 1de 4

www.sispat.com.ar - info@sispat.com.

ar
TEL/FAX: ++54 298 4423896
Gral. Roca, Patagonia Argentina

NOTA TECNICA
Utilizacin de Afalina XLReport 4.5 en vb.net.
30/07/2013 14:51 Tcnico: Victor Kischinovsky

Causa de la nota:
Instructivo de utilizacin del componente de exportacin a Excel Afalina XLReport 4.5 (ltima versin de 2004)
XLReport es una componente de exportacin a Excel muy gil y de rpida programacin, aunque es un poco
rudimentaria y hasta rebuscada.
Programacin:
La implementacin consta de un template (archivo Excel) y de la programacin de la interfaz XLReport y XLDatasource
(mas all la obtencin de datos y el dataset)
En el grfico de la derecha se representa esquemticamente la implementacin desde un dataset.
Imports AfalinaSoft.Reports

Dim dsData As New DataSet
Dim TableH, TableI, TablaCabecera As New DataTable
Dim WithEvents xlRpt As New XLReport
.
.
.
(Se asume que los datos ya estn disponibles)

xlRpt.Template= "C:\template.xls"

xlRpt.Datasources.Clear()

dsData.Tables.Add(TablaCabecera)
Dim xlDsC As New XLRDatasource
xlDsC.Alias = "Cabecera"
xlDsC.DataSource = dsData
xlDsC.DataMember = "Cabecera"
xlRpt.Datasources.Add(xlDsC)

Propiedades del XLRDatasource.
Alias: Es el nombre que se enlaza desde el XLDatasource del XLReport y la formula del archivo Excel.
DataSource: Contenedor de datos
DataMember: Nombre de la tabla que contiene los datos.

En cuanto al Excel, debe definirse formulas que corresponden a los campos
que sern mostrados. El formato de la frmula es
AliasDelXLDatasource_NombreDelCampoDeLaTabla, es decir el valor de la
propiedad Alias que se le dio al XLRDatasource concatenado al nombre del
campo de la tabla que lo alimenta, separados por un guin bajo _.
Como no es una frmula de Excel es normal que muestre el valor #NOMBRE? en el libro Excel, no es un error.

En el template Excel la primer columna (A) debe quedar en blanco y no se utiliza.
Tabla H
DataSource H
DataMember
Template Reporte XLS
XLReport
DataSet
www.sispat.com.ar - info@sispat.com.ar
TEL/FAX: ++54 298 4423896
Gral. Roca, Patagonia Argentina

En el caso descripto, solo se mostrar un valor de, que corresponde al primer valor del campo de la tabla
del primer registro de esta. Por eso no se especific la propiedad Range en el XLRDataSource y tampoco el
rango en el libro Excel (ver Exportar Tablas)

Reporte Tabla
Para exportar una tabla a un archivo Excel, solo deben agregarse a lo ya expuesto, el rango definido en el
template Excel, y definir la propiedad Range en el XLRDataSource

xlDsH.Alias = "DatosI"
xlDsH.DataSource = dsData
xlDsH.DataMember = "TableI"
xlDsH.Range = "DatosI" (No es necesario que sea el nombre de la table pero es recommendable a fin de seguimient)

En cuanto al template en Excel, se debe definir un rango con el mismo nombre que tiene el Alias del
xlrdatasource.


El rango definido en Excel debe abarcar todos los campos a mostrar de esa tabla (fila 5). Debe empezar si o s
en la primer columna (A) y debe abarcar una fila ms hacia abajo (fila 6).

Reporte Master-Detail
Primero hay que definir el dataset con las tablas y la relacin
que las une. Posteriormente se deben cumplir las siguientes
reglas en los XLRDataSource:
- En el XLRDataSource _H el datasource debe ser la Tabla_H desde
el dataset (no el dataset).
- En el XLRDataSource _H el datamember no se especifica.
- En el XLRDataSource _I el datasource debe ser la Tabla_H (no el
dataset).
- En el XLRDataSource _I el datamember es el nombre de la
relacin (string) que relacionan a la TablaH con la TablaI.
- Luego de agregar los XLRDatasource al XLReport, se debe
especificicar la propiedad MasterSource del XLRDataSource_I
igual a XLRDataSource_H
Tabla H
Tabla I
Relacin
DataSource H
DataMember
Template Reporte XLS
DataSource I
DataMember
XLReport
DataSet
www.sispat.com.ar - info@sispat.com.ar
TEL/FAX: ++54 298 4423896
Gral. Roca, Patagonia Argentina




Dim Key_H() As DataColumn = New DataColumn() {TableH.Columns("Pallet")}
Dim Key_I() As DataColumn = New DataColumn() {TableI.Columns("Pallet)}

'relaciona las tablas
Dim relacion As DataRelation = New DataRelation("RelacionPallet", Key_H, Key_I)
dsData.Relations.Add(relacion)

xlDsH.Alias = "DatosH"
xlDsH.DataSource = dsData.Tables("TableH")
xlDsH.Range = "DatosH"

xlDsI.Alias = "DatosI"
xlDsI.DataSource = dsData.Tables("TableH")
xlDsI.DataMember = "RelacionPallet"
xlDsI.Range = "DatosI"

xlRpt.Datasources.Add(xlDsH)
xlRpt.Datasources.Add(xlDsI)
xlDsI.MasterSource = xlDsH

En cuanto al rango de celdas en Excel se debe cumplir las mis reglas que para una tabla sola. Es decir el
rango DatosI que tiene las formulas en la fila 5 y abarca hasta la fila 6, y el rango DatosH debe abarcar
los datos propios del rango H, mas el rango DatosI, mas una fila, es decir empieza en la fila 4 y termina en
la fila 7 (incluyendo la fila vaca de abajo).



Los rango de celdas deben tener la misma longitud. Es decir si el DatosH llega hasta la columna AB, el rango
DatosI debe llegar tambin hasta la columna AB, pero de una fila menos. De lo contrario los datos se muestran
desordenados.
www.sispat.com.ar - info@sispat.com.ar
TEL/FAX: ++54 298 4423896
Gral. Roca, Patagonia Argentina

Para Tener en Cuenta
- Template Excel
Los formatos de celdas deben aplicarse despus de definir las formulas. Las celdas mientras se definen
las formulas deben tener formato General
Si se ejecuta un reporte y se tiene abierto el template en Excel, la aplicacin d error.

- XLRDatasource
Si un XLRDatasource se utiliza con un rango definido en Excel (para mostrar tabla), no puede ser
utilizado para campos frmulas sueltos ya que solo se mostrar en el rango definido. Si en necesario
utilizar los datos, deber utilizarse otro XLRDataSource con el el primer registro del original.

Todos los XLRDatasource deben tener referencia en el template Excel de lo contrario se muestra un
error al abrir el reporte.






- Referencias


- Solo para x86
XLReport es un componente para x86 por lo que no funciona en desarrollos x64. El error que muestra es el
siguiente:






-.FIN DE NOTA TECNICA

También podría gustarte