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.

rmedcrnetfig01.jpg
Figura 1. Formulário da Aplicação Exemplo

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
Listagem 1. Código da função ExportarDocumento

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
Listagem 2. Evento Click< dos botões

Execute sua aplicação e veja o resultado é como o da Figura 2.

rmedcrnetfig02.jpg
Figura 2. Documentos Exportados