Usuário com melhor resposta
Demora no carregamento do Relatório/Gráfico em Report Viewer

Pergunta
-
Tenho uma aplicação em Asp.net utilizando Ajax e faço meus relatórios e gráficos a partir do Report Viewer. Para os gráficos eu faço da seguinte forma: coloco um objeto Report Viewer de pequenas dimensões na tela, apenas para o usuário ver o gráfico rapidamente, o que realmente acontece. Porém tenho um botão ao lado desse gráfico que, ao ser clicado, gera um documento PDF, em uma nova tela, desse mesmo gráfico para ser posteriormente impresso, agora ocupando um tamanho A4. O meu problema é que esses gráficos estão demorando muito para serem criados em PDF, às vezes levando 10 minutos para a apresentação de apenas um gráfico. Minha pergunta é: será que existe alguma maneira rápida de exportar esses gráficos em PDF? a Rotina que utilizo para a exportação em PDF é:
Private Sub ImprimirPDF()
Try
'passar pra pdf
Dim aviso() As Warning = Nothing
Dim streamids() As String = Nothing
Dim mimetype As String = "application/pdf"
Dim encoding As String = String.Empty
Dim extensao As String = String.Empty
Dim byteviewer() As Byte
byteviewer = MeuObjetoReportViewer.LocalReport.Render("pdf", Nothing, mimetype, encoding, extensao, streamids, aviso)
Response.Buffer = True
Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "inline; filename=ReportName.pdf")
Response.BinaryWrite(byteviewer)
Response.Flush()
Response.End()
MeuObjetoReportViewer.LocalReport.Refresh()
MeuObjetoReportViewer.Visible = True
Catch Ex As Exception
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "", "<script>alert('Falha!'" & " - " & Ex.Message & ");</script>", False)
End TryEnd Sub
Respostas
-
Oii , da uma olhada neste codigo que fiz , nele vc vai passar o seu report e o nome do arquivo que o cliente vai baixar .
Public Sub ExportaPDF(ByRef Report As Microsoft.Reporting.WebForms.ReportViewer, ByVal Nome As String) Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing Dim streamids As String() = Nothing Dim mimeType As String = Nothing Dim encoding As String = Nothing Dim extension As String = Nothing Dim bytes As Byte() bytes = Report.LocalReport.Render("PDF", _ Nothing, mimeType, _ encoding, extension, streamids, warnings) Dim fs As New IO.FileStream(Server.MapPath("") & "\" & Nome & ".pdf", IO.FileMode.Create) fs.Write(bytes, 0, bytes.Length) fs.Close() Baixar("\" & Nome & ".pdf") End Sub Public Sub Baixar(ByVal Caminho As String) Try Dim pasta As New IO.DirectoryInfo(Server.MapPath("")) Dim arquivo As New IO.FileInfo(pasta.FullName + Caminho) Response.Clear() Response.AddHeader("Content-Disposition", "attachment; filename=" & arquivo.Name) Response.AddHeader("Content-Length", arquivo.Length.ToString()) Response.WriteFile(arquivo.FullName) Catch ex As Exception Throw ex End Try End Sub
“Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
- Sugerido como Resposta Fernando Miranda .Net quinta-feira, 1 de julho de 2010 04:00
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 8 de julho de 2010 20:45
-
Eu a uso assim que abasteço com os dados no report
- Marcado como Resposta Luiz Corrêa domingo, 11 de julho de 2010 14:54
Todas as Respostas
-
Luiz,
Alguma novidade quanto a essa sua dúvida?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
-
Oii , da uma olhada neste codigo que fiz , nele vc vai passar o seu report e o nome do arquivo que o cliente vai baixar .
Public Sub ExportaPDF(ByRef Report As Microsoft.Reporting.WebForms.ReportViewer, ByVal Nome As String) Dim warnings As Microsoft.Reporting.WebForms.Warning() = Nothing Dim streamids As String() = Nothing Dim mimeType As String = Nothing Dim encoding As String = Nothing Dim extension As String = Nothing Dim bytes As Byte() bytes = Report.LocalReport.Render("PDF", _ Nothing, mimeType, _ encoding, extension, streamids, warnings) Dim fs As New IO.FileStream(Server.MapPath("") & "\" & Nome & ".pdf", IO.FileMode.Create) fs.Write(bytes, 0, bytes.Length) fs.Close() Baixar("\" & Nome & ".pdf") End Sub Public Sub Baixar(ByVal Caminho As String) Try Dim pasta As New IO.DirectoryInfo(Server.MapPath("")) Dim arquivo As New IO.FileInfo(pasta.FullName + Caminho) Response.Clear() Response.AddHeader("Content-Disposition", "attachment; filename=" & arquivo.Name) Response.AddHeader("Content-Length", arquivo.Length.ToString()) Response.WriteFile(arquivo.FullName) Catch ex As Exception Throw ex End Try End Sub
“Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
- Sugerido como Resposta Fernando Miranda .Net quinta-feira, 1 de julho de 2010 04:00
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 8 de julho de 2010 20:45
-
-
-
Eu a uso assim que abasteço com os dados no report
- Marcado como Resposta Luiz Corrêa domingo, 11 de julho de 2010 14:54
-