Frequentemente no desenvolvimento de nossas aplicações nos deparamos com a seguinte situação: como exportar um relatório em Crystal Reports para um arquivo de formato .DOC, .XLS ou mesmo .PDF? O objetivo do artigo é demonstrar o recurso de exportação para alguns tipos de arquivos do Crystal Reports .NET, adicionando à aplicação recursos para que o usuário consiga gerar um arquivo em um determinado formato e imprimi-lo.
Com um projeto criado e uma base de dados que será utilizada para alimentar o relatório, vamos inserir três botões em nossa aplicação, conforme a Figura 1.
Cada botão será responsável por exportar o relatório em um formato especifico. No modo de código, vamos definir uma nova função chamada ExportarDocumento, como mostra a Listagem 1.
public Function ExportarDocumento(ByVal tipoFormato As Integer) As Boolean
Dim CrExportOptions As [Shared].ExportOptions
Dim CrDiskFileDestinationOptions As New [Shared].DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New [Shared].PdfRtfWordFormatOptions()
Dim crystalReport1 As New CrystalReport1
CrExportOptions = crystalReport1.ExportOptions
crystalReport1.SetDatabaseLogon("sa", "ilheus10")
With CrExportOptions
.ExportDestinationType = [Shared].ExportDestinationType.DiskFile
'rtf
If tipoFormato = 1 Then
CrDiskFileDestinationOptions.DiskFileName = "C:\documento.doc"
.ExportFormatType = [Shared].ExportFormatType.RichText
'pdf
ElseIf tipoFormato = 2 Then
CrDiskFileDestinationOptions.DiskFileName = "C:\documento.pdf"
.ExportFormatType = [Shared].ExportFormatType.PortableDocFormat
ElseIf tipoFormato = 3 Then
CrDiskFileDestinationOptions.DiskFileName = "C:\documento.xls"
.ExportFormatType = [Shared].ExportFormatType.Excel
End If
.FormatOptions = CrFormatTypeOptions
.DestinationOptions = CrDiskFileDestinationOptions
End With
Try
crystalReport1.Export()
Return True
Catch err As Exception
Return False
End Try
End Function
Antes de iniciar o código da função ExportarDocumento devemos importar a namespace para manipular o CrystalReports:
Imports CrystalDecisions
O objeto ExportOptions é responsável por determinar como e para onde o arquivo será exportado e recebe duas propriedades para exportação: o CrDiskFileDestinationOptions e o ExportFormatType. O primeiro determina onde o arquivo será exportado (no nosso exemplo estamos exportando para a unidade C:\ ) e com qual nome. Já o segundo informa o tipo de arquivo a ser exportado, que dependerá do parâmetro especificado na função: 1 – RTF , 2 – PDF , 3 – XLS .
Por últim,o escreveremos o código para o evento click dos botões que serão responsáveis por exportar os relatórios conforme a Listagem 2.
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
If ExportarDocumento(2) = True Then
MsgBox("Documento exportado para C:\documento.pdf")
Else
MsgBox("Erro ao exportar o documento")
End If
End Sub
Private Sub Button2_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If ExportarDocumento(1) = True Then
MsgBox("Documento exportado para C:\documento.rtf")
Else
MsgBox("Erro ao exportar o documento")
End If
End Sub
Private Sub Button3_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If ExportarDocumento(3) = True Then
MsgBox("Documento exportado para C:\documento.xls")
Else
MsgBox("Erro ao exportar o documento")
End If
End Sub
Execute sua aplicação e veja o resultado é como o da Figura 2.