Exportar ReporViewer a Pdf de Datagridview no Conectado

Aquí nos encontramos nuevamente, y continuando con un post anterior decidí realizar un post mas, para facilitar la exportación de formato PDF de un reporte hecho en ReportViewer.

Tomando como base de ejemplo del post anterior:
http://jossm03.blogspot.com/2015/08/reportviewer-con-datagridview-no.html

he agregado un boton e implementado la rutina para exportar directo a pdf  veamos la captura:


Siendo asi: les pongo las rutinas que contiene el boton de Exportar a PDF

 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  Almacenar()
  ExportarPDF()
 End Sub
 Sub Almacenar() 'Almacena los datos presentados en el datagridview
        'instanciamos los objetos creados 
        Try
   Dim ds As New DataSet1
   Dim dtw As DataRow
   For i As Integer = 0 To grid.Rows.Count - 1
    dtw = ds.DataTable1.NewRow()
    dtw("n") = grid.Item(0, i).Value
    dtw("Descripcion") = grid.Item(1, i).Value
    dtw("Valor_Unitario") = Replace(CDbl(grid.Item(2, i).Value), ",", ".") ' formato de punto para datatable
    dtw("Cantidad") = grid.Item(3, i).Value
    dtw("Subtotal") = Replace(CDbl(grid.Item(4, i).Value), ",", ".") 'formato de punto para datatable
    ds.DataTable1.Rows.Add(dtw)
   Next
   ''---------------------PREPARAR REPORTE--------------------
   fuente.Name = "Productos" ' Nombre identico al que le di al dataset del report en tiempo de diseño
   fuente.Value = ds.Tables(0)
   ''---------------------PREPARAR REPORTE------------------
  Catch ex As Exception
  End Try
 End Sub
 Sub ExportarPDF()
  Reporte.ReportViewer1.LocalReport.DataSources.Clear()
  Reporte.ReportViewer1.LocalReport.DataSources.Add(fuente)
  Reporte.ReportViewer1.LocalReport.ReportEmbeddedResource = "DatagridviewNoconectado.Fact.rdlc" 'exactamente como se llaman el proyecto y reporte
  Reporte.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("Productos", "DataSet1"))
  'Aplica el render y toma como datos la dataset creadas
  'Abre en cuadro de dialogo y guarda el archivo PDF
  Dim byteViewer As Byte() = Reporte.ReportViewer1.LocalReport.Render("PDF")
  Dim saveFileDialog1 As New SaveFileDialog()
  saveFileDialog1.Filter = "*Archivos PDF  (*.pdf)|*.pdf"
  saveFileDialog1.FilterIndex = 2
  saveFileDialog1.RestoreDirectory = True
  If saveFileDialog1.ShowDialog() = DialogResult.OK Then
   Dim newFile As New FileStream(saveFileDialog1.FileName, FileMode.Create)
   newFile.Write(byteViewer, 0, byteViewer.Length)
   newFile.Close()
  End If
  System.Diagnostics.Process.Start(saveFileDialog1.FileName)
 End Sub
End Class

Al ejecutar les permite con un cuadro de dialogo poder guardar con nombre personalizado y abrir consecutivamente les dejo la captura final



Y esto es todo, espero les sea de utilidad y nos vemos en un siguiente post

El ejemplo modificado: 

Comentarios

Entradas populares de este blog

Imprimir directamente ReportViewer a impresora predeterminada

DevComponents DotnetBar 12.5.0.2

Metodo Iterativo Gauss-Seidel en Visual Basic