Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VB.NET: Microsoft Reports – Exportar Relatórios

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
        PDF
        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:

Anónimo disse...

Olá otima dica , mas não nao consigo enter exatamente o alter nas tags em verde ... alguma dica?

Jorge Paulino disse...

alter nas tags em verde

Não entendi!

Wesley disse...

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

Jorge Paulino disse...

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.

Wesley disse...

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.

Anónimo disse...

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

Jorge Paulino disse...

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

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico