Imports System.IO Imports DevExpress.Xpf.Core Imports DevExpress.Xpf.Grid.Printing Imports DevExpress.XtraPrinting Imports DevExpress.XtraReports.UI Public Class tsXtraReport Public Shared Sub ExportarAPDF(Plantilla() As Byte, Datos As Object, FicheroPDF As String) Dim xr As DevExpress.XtraReports.UI.XtraReport Dim s As String = System.Text.Encoding.UTF8.GetString(Plantilla) Using sw As New StreamWriter(New MemoryStream()) sw.Write(s) sw.Flush() xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, True) End Using Try Dim pr As Global.DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First pr.Value = Now pr.Visible = False Catch ex As Exception End Try xr.DataSource = Datos xr.CreateDocument() xr.ExportToPdf(FicheroPDF) End Sub Public Shared Sub ExportarAxls(Plantilla() As Byte, Datos As Object, Ficheroxls As String) Dim xr As DevExpress.XtraReports.UI.XtraReport Dim s As String = System.Text.Encoding.UTF8.GetString(Plantilla) Using sw As New StreamWriter(New MemoryStream()) sw.Write(s) sw.Flush() xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, True) End Using Try Dim pr As Global.DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First pr.Value = Now pr.Visible = False Catch ex As Exception End Try xr.DataSource = Datos xr.CreateDocument() xr.ExportToXls(Ficheroxls) End Sub Public Shared Sub ExportarAxlsx(Plantilla() As Byte, Datos As Object, Ficheroxlsx As String) Dim xr As DevExpress.XtraReports.UI.XtraReport Dim s As String = System.Text.Encoding.UTF8.GetString(Plantilla) Using sw As New StreamWriter(New MemoryStream()) sw.Write(s) sw.Flush() xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, True) End Using Try Dim pr As Global.DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First pr.Value = Now pr.Visible = False Catch ex As Exception End Try xr.DataSource = Datos xr.CreateDocument() xr.ExportToXlsx(Ficheroxlsx) End Sub Public Shared Sub ExportarAcsv(Plantilla() As Byte, Datos As Object, Ficherocsv As String) Dim xr As DevExpress.XtraReports.UI.XtraReport Dim s As String = System.Text.Encoding.UTF8.GetString(Plantilla) Using sw As New StreamWriter(New MemoryStream()) sw.Write(s) sw.Flush() xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, True) End Using Try Dim pr As Global.DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First pr.Value = Now pr.Visible = False Catch ex As Exception End Try xr.DataSource = Datos xr.CreateDocument() xr.ExportToCsv(Ficherocsv) End Sub Public Shared Function ExportarAPDF(Plantilla() As Byte, Datos As Object) As MemoryStream Dim xr As DevExpress.XtraReports.UI.XtraReport Dim s As String = System.Text.Encoding.UTF8.GetString(Plantilla) Using sw As New StreamWriter(New MemoryStream()) sw.Write(s) sw.Flush() xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, True) End Using Try Dim pr As Global.DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First pr.Value = Now pr.Visible = False Catch ex As Exception End Try xr.DataSource = Datos xr.CreateDocument() Dim ms As New MemoryStream xr.ExportToPdf(ms) Return ms End Function Private Shared NumeroCopias As Integer Public Shared Sub ImprimirPlantilla(Plantilla As Byte(), ImpresoraPredeterminada As Boolean, Copias As Integer, Datos As Object, Optional Fecha As DateTime? = Nothing) Try If Fecha Is Nothing Then Fecha = Now Dim xr As New XtraReport xr.LoadLayoutFromXml(New MemoryStream(Plantilla), True) ImprimeInforme(xr, ImpresoraPredeterminada, Copias, Fecha, Datos) Catch ex As Exception DXMessageBox.Show(ex.Message, "Atención", MessageBoxButton.OK, MessageBoxImage.Error) End Try End Sub Public Shared Sub ImprimeInforme(xr As XtraReport, ImpresoraPredeterminada As Boolean, Copias As Integer, Datos As Object, Optional Fecha As DateTime? = Nothing) Try If Fecha Is Nothing Then Fecha = Now For Each pr In xr.Parameters pr.Visible = False If pr.Name = "Fecha" Then pr.Value = Fecha End If Next xr.DataSource = Datos xr.CreateDocument(True) If ImpresoraPredeterminada Then If Copias < 2 Then NumeroCopias = 1 xr.Print() Else NumeroCopias = Copias AddHandler xr.PrintingSystem.StartPrint, AddressOf xr_StartPring xr.Print() End If Else PrintHelper.Print(xr) 'xr.PrintDialog() End If Catch ex As Exception DXMessageBox.Show(ex.Message, "Error") End Try End Sub Private Shared Sub xr_StartPring(sender As Object, e As PrintDocumentEventArgs) e.PrintDocument.PrinterSettings.Copies = NumeroCopias End Sub End Class