Exportar os relatórios para determinado formato, é uma opção muito prática, para simplesmente guardar um relatório num ficheiro ou, por exemplo, enviar como anexo num email. O controlo ReportViewer permite visualizar, mas também exportar, os ficheiros *.rdlc e *.rdl, quer seja uma aplicações WinForms ou ASP.NET.
No entanto é ainda mais prático, especialmente para automatizar processos, gerar esses ficheiros dinamicamente, sem ser necessário a utilização do ReportViewer.
Quando é utilizado em modo local (LocalReport) existem alguns tipos de formatos que se podem utilizar para exportar: Microsoft Excel, PDF ou como imagem.
Para exportar um relatório é necessário apenas fazer o Render() de um LocalReport para um array de bytes, e depois usar um FileStream para escrever o ficheiro final.
Pode-se usar uma classe como esta:
Public Class ReportUtils
Enum rptFormat
Excel
Image
End Enum
'''<summary>
''' Exporta um LocalReport para um formato definido
'''</summary>
'''<param name="report">LocalReport</param>
'''<param name="output">Formato final</param>
'''<param name="filePath">Caminho + Nome do ficheiro</param>
'''<remarks></remarks>
Public Sub Export(ByVal report As LocalReport, ByVal output As rptFormat, ByVal filePath As String)
Dim warnings As 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 = report.Render(output.ToString, Nothing, _
mimeType, encoding, extension, streamids, warnings)
Using fs As New IO.FileStream(filePath, IO.FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
End Using
bytes = Nothing
End Sub
End Class
Depois, para utilizar a classe, criando o ficheiro no formato desejado e executando-o:
Dim rpt As New LocalReport
rpt.ReportPath = Application.StartupPath & "\..\..\rptProducts.rdlc"
' ---------------------------------------------------------
' Definir DataSource, Parameters, etc, para o relatório
' ---------------------------------------------------------
Dim fileName As String = "d:\teste.pdf"
Dim clsReport As New ReportUtils
clsReport.Export(rpt, ReportUtils.rptFormat.PDF, fileName)
Process.Start(fileName)
Como podem ver neste pequeno exemplo, é bastante simples e fácil de utilizar.
7 comentários:
Olá otima dica , mas não nao consigo enter exatamente o alter nas tags em verde ... alguma dica?
alter nas tags em verde
Não entendi!
Bom Dia não intendi exatamente o que tenho que altrerar em cada espaço em verde ex: '''LocalReport
o que devo substituir nesse local???
grato
Mas não é preciso alterar nada aí ... isso são apenas notas (xml comments).
Como estás a utilizar? Mostra um exemplo do que estás a tentar fazer.
http://www.macoratti.net/07/05/vb_prgs.htm
estou tentando desenvolver um relatorio igua a do item 5 do site acima , acho que sua programação irá me ajudar.
grato.
Quero fazer um relátorio em que as informações apareçam uma embaixo da outra, organizado e que vão completando a folha, sem ser necessario utilizar a planilha do EXcel.
Grato
Sim, pode ajudar. No entanto não é possível na versão do Visual Studio Express.
Veja os restantes artigos sobre o tema que tenho no blog: http://www.jorgepaulino.com/search/label/Microsoft%20Reports
Enviar um comentário