ASP.NET - Doy Inf sobre CrystalR.y guardar en pdf,excel,doc,

 
Vista:

Doy Inf sobre CrystalR.y guardar en pdf,excel,doc,

Publicado por JoseM (45 intervenciones) el 21/03/2007 10:47:50
Bien, siempre he posteado pidiendo ayuda y aún no tengo todo terminado pero quiero aportar un poquito,... quisiera decir de dónde saqué algunos ejmplos pero he visitado tantas páginas y foros que no me acuerdo así que alla va:

En mi caso he utilizado un dataset, plantilla de crystal report(informe.rpt) y como no, el reportview1que te da visual studio 2005.

Una vez tengo la plantilla .rpt creada con su dataset propio y una vez ya tengo mi dataset cargado hay que hacer los siguientes pasos para que presente el informe:

Los imports que tengo son:
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.Data.SqlClient
Imports System.Data
Imports System.Data.OleDb
Imports System.Exception
Imports System.Security.Policy
Imports System.Security.Permissions
Imports CrystalDecisions.Web
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

'Aquí iria el código anterior para cargar el dataset ds
Private reportdocument2 as New reportdocument
reportdocument2.Load(Server.MapPath("Informe.rpt")) (Informe.rpt es mi plantilla de crystal)
reportdocument2.SetDataSource(ds) (ds es midataset)
CrystalReportViewer1.ReportSource = reportdocument2

Los pasos de cargar el dataset o de hacer la plantilla .rpt doy por hecho que a duras penas lo habeis conseguido.

*********************************** AHORA GUARDAR EL INFORME**************************
Private rptStream As New System.IO.MemoryStream
Private crReportDocument As New ReportDocument

crReportDocument.Load(Server.MapPath("Informe.rpt"), CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)
crReportDocument.SetDataSource(ds)
'Se crea el documento de lectura y escritura
'se envia el reporte al stream y le indicamos el metodo de escritura o tipo de documento
rptStream = CType(crReportDocument.ExportToStream(CInt(ddlTipos.SelectedValue)), System.IO.MemoryStream)

'Limpiamos la memoria
Response.Clear()
Response.Buffer = True

'Le indicamos el tipo de documento que vamos a exportar
'Para eso se utiliza una función que encontré pero no me acuerdo donde, muy útil!!
Response.ContentType = FormatoDocumento() (la función la pongo más abajo)

'Automaticamente se descarga el archivo
Response.AddHeader("Content-Disposition", "attachment;filename=" + Me.nombreReporte)

'Se escribe el archivo
Response.BinaryWrite(rptStream.ToArray())
Response.End()

*********************************FUNCION FORMATODOCUMENTO**************************
'Ponemos un combobox llamado ddlTipos con los Valores:Excel,PDF,etc,.. en la propiedad Items.

Private Function FormatoDocumento() As String
Dim tipo As String
Select Case Integer.Parse(ddlTipos.SelectedValue)
Case ExportFormatType.Excel
tipo = "application/vnd.ms-excel"
nombreReporte &= ".xls"
Case ExportFormatType.RichText
tipo = "application/rtf"
nombreReporte &= ".rtf"
Case ExportFormatType.WordForWindows
tipo = "application/msword"
nombreReporte &= ".doc"
Case Else
tipo = "application/pdf"
nombreReporte &= ".pdf"
End Select
Return tipo
End Function

Espero que os sirva de ayuda, si es para ponerlo en un ordenador vuestro funcionará perfectamente, eso sí, si planteais el ponerlo en un hosting de servicio contratatado tendreis problemas, los cuales ahora estoy tratando de solucionar y aún no he podido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder