Cuando trabajamos con reportes siempre requerimos la funcionalidad de exportación. En crystal reports para asp.net, realizar esta tarea es sumamente sencillo. Sin embargo la pregunta más grande que salta siempre, es como realizarlo utilizando código Behind.

Para poder acceder a las librerias de crystal y sus componentes, primero debemos importar los espacios de nombres:

 

 

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

 CrystalDecisions.CrystalReports.Engine, nos servirá para poder manejar nuestro reportDocument y CrystalDecisions.Shared, será el medio que utilicemos para la exportación.

Así que, veamos como podemos exportar nuestro informe sin tener que enviarlo a la impresora, recordemos que por defecto crystal reports ya tiene la opcion de exportar a PDF sin embargo debemos hacerlo tal como si fueramos a imprimir y que es lo que evitaremos acá.

Colocamos un botón en nuestra pagina asp

 

<asp:Button ID="btntopdf" runat="server" Text="Exportar a PDF" />

Y en nuestro boton deberemos ejecutar la siguiente rutina:

 

Protected Sub btntodpf_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btntopdf.Click

 

       'Cargar reporte. Enlazando a la fuente de datos.

       LoadReporte()

 

       'Mas adelante veremos que estas lineas las podemos obviar
       Response.Buffer =
False

       Response.Clear()  'ClearContent, ClearHeaders

 

       reporteDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, "NombreArchivo")

  

   End Sub

LoadReport, es el encargado de llenar nuestro crystal con la fuente de datos.

Está fue la primer forma de exporta nuestro crystal reports, pero no es la única, así que vamos a ver otra forma en la cual utilizaremos el metodo

ExportToHttpResponse

 Para este metodo, nuestro código en el botón cambia relativamente, pero antes de ello, daremos un repaso a los metodos utilizados.

Nuestro primer parametro FormatType es un valor de tipo ExportFormatType, que puede corresponder a cualquiera de los metodos que enumeramos a continuación:

s

CrystalReport: El formato al cual se exporta es de Tipo CrystalReport.

Excel: El formato al cual se exporta es de tipo Excel

ExcelRecord: El formato al cual se exporta es de Tipo Excel Record.

NoFormat: No se ha especificado un formato de exportación.

PortableDocFormat: El formato al cual se exporta es de Tipo PDF.

 No voy a enumerar todos, pues me imagino que ya sabrán la idea de cada uno de los formatos, los numerados arriba son los mas importantes.

Nuestro segundo parametro el objeto response nos permite adozar el archivo.

Y por último, nuestro tercer parametro, definirá si debe ir como un objeto adjunto o no. Si lo colocamos en TRUE, estaremos enviando nuestro archivo como parametro, esto hará que no necesitemos las siguientes líneas de código:

 

Response.Buffer = False

Response.Clear()

  Con esto realizado, ya contamos con la posibilidad de enviar el archivo directamente al cliente.

 

Ahora si, veamos cuanto se ha reducido nuestro código:

Unicamente nos quedan dos líneas de código en nuestro botón

 

       'Cargar reporte. Enlazando a la fuente de datos.

       LoadReport()

 

       reporteDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, True, "NombreArchivo")

  Para finalizar, nada mas decir que espero esto les sea de ayuda y por supuesto,  que les facilite la vida con el uso de crystal reports.