none
Exportar ReportViewer a PDF RRS feed

  • Pregunta

  • private void Informe_Load(object sender, EventArgs e) { reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Encabezado", Detalles)); reportViewer1.LocalReport.SubreportProcessing += LocalReport_SubreportProcessing; ReportParameter parameters = new ReportParameter(); parameters = new ReportParameter("FechaIni", fechaI); reportViewer1.LocalReport.SetParameters(parameters); reportViewer1.RefreshReport(); this.reportViewer1.RefreshReport(); guardarInforme(); } private void guardarInforme() { // Quiero introducir aqui el codigo para exportar el formulario que

    se muestra a pdf. Y que haga este proceso todos los dias a

    la misma hora.

    }


    • Cambiado Karen Malagón viernes, 22 de enero de 2016 21:52 Windows Forms issue
    miércoles, 20 de enero de 2016 10:49

Respuestas

  • Hola tximas, y si colocas un bloque try..catch y declaras un tipo de excepción LocalProcessingException que obtienes?

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    My Blog
    My code samples

    • Marcado como respuesta tximas martes, 26 de enero de 2016 13:07
    lunes, 25 de enero de 2016 11:44

Todas las respuestas

  • Hola tximas, podrías hacer algo similar a esto:

    string v_mimetype;
    string v_encoding;
    string extension;
    string[] v_streamids;
    Microsoft.Reporting.WinForms.Warning[] warnings;
    string sugerencia = string.Empty;
    
    Microsoft.Reporting.WinForms.ReportViewer reportViewer1;
    Microsoft.Reporting.WinForms.LocalReport objRDLC = new Microsoft.Reporting.WinForms.LocalReport();
    reportViewer1.LocalReport.ReportEmbeddedResource = "reportViewer1.rdlc";
    reportViewer1.LocalReport.DisplayName  = sugerencia;
    
    objRDLC.DataSources.Clear();
    byte[] byteViewer = TU_REPORT_VIEWER.LocalReport.Render("PDF", null, out v_mimetype, out v_encoding, out extension, out v_streamids, out warnings);
    
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    
    saveFileDialog1.Filter = "*Archivos PDF (*.pdf)|*.pdf";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;
    saveFileDialog1.FileName = sugerencia;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            FileStream newFile = new FileStream(saveFileDialog1.FileName, FileMode.Create);
            newFile.Write(byteViewer, 0, byteViewer.Length);
            newFile.Close();
        }

    El control SaveFileDialog permite guardar el archivo PDF en algún lugar que desees. Todo este código puede ir dentro de tu método guardarInforme(). Puedes obviar el uso de este control si deseas hacerlo automáticamente.

    Espero resulte útil.

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    My Blog
    My code samples

    miércoles, 20 de enero de 2016 11:27
  • Cuando pones "TU_REPORT_WIEWER" te refieres al control reportViewer, al archivo .rdlc o al formulario?

    byte[] byteViewer = TU_REPORT_VIEWER.LocalReport.Render

    jueves, 21 de enero de 2016 6:32
  • Y me sale este fallo en esta linea:

    No se controló Microsoft.Reporting.WinForms.LocalProcessingException
      Message=Se ha producido un error durante el procesamiento local de informes.
      Source=Microsoft.ReportViewer.WinForms
      StackTrace:
           en Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
           en Microsoft.Reporting.WinForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, CreateAndRegisterStream createStreamCallback, Warning[]& warnings)
           en Microsoft.Reporting.WinForms.LocalReport.InternalRender(String format, Boolean allowInternalRenderers, String deviceInfo, PageCountMode pageCountMode, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
           en Microsoft.Reporting.WinForms.LocalReport.Render(String format, String deviceInfo, PageCountMode pageCountMode, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
           en Microsoft.Reporting.WinForms.Report.Render(String format, String deviceInfo, String& mimeType, String& encoding, String& fileNameExtension, String[]& streams, Warning[]& warnings)
           en CIAR.InformeCompleto.guardarInforme() en C:\Users\EBECMOM\Documents\Proyectos Visual Studio 2010\CIAR Trabajo\CIAR 1.1.4.1 - Gestor de Averías\CIAR\InformeCompleto.cs:línea 77
           en CIAR.InformeCompleto.guardarInfomeToolStripMenuItem_Click(Object sender, EventArgs e) en C:\Users\EBECMOM\Documents\Proyectos Visual Studio 2010\CIAR Trabajo\CIAR 1.1.4.1 - Gestor de Averías\CIAR\InformeCompleto.cs:línea 97
           en System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
           en System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
           en System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
           en System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
           en System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
           en System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
           en System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
           en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           en System.Windows.Forms.Control.WndProc(Message& m)
           en System.Windows.Forms.ScrollableControl.WndProc(Message& m)
           en System.Windows.Forms.ToolStrip.WndProc(Message& m)
           en System.Windows.Forms.MenuStrip.WndProc(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           en System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           en System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           en System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
           en System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           en System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           en System.Windows.Forms.Application.Run(Form mainForm)
           en CIAR.Program.Main() en C:\Users\EBECMOM\Documents\Proyectos Visual Studio 2010\CIAR Trabajo\CIAR 1.1.4.1 - Gestor de Averías\CIAR\Program.cs:línea 19
           en System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           en System.AppDomain.nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           en System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
           en System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
           en System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
           en System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
           en System.Activator.CreateInstance(ActivationContext activationContext)
           en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
           en System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           en System.Threading.ThreadHelper.ThreadStart()
      InnerException: System.ApplicationException
           Message=No se ha especificado la definición del informe 'reportViewer1.rdlc'
           Source=Microsoft.ReportViewer.Common
           StackTrace:
                en Microsoft.Reporting.PreviewStore.GetCompiledReport(CatalogItemContextBase context, Boolean rebuild, Byte[]& reportDefinition, ControlSnapshot& snapshot)
                en Microsoft.Reporting.PreviewStore.GetCompiledReport(CatalogItemContextBase context, Boolean rebuild, ControlSnapshot& snapshot)
                en Microsoft.Reporting.LocalService.GetCompiledReport(CatalogItemContextBase itemContext, Boolean rebuild, ControlSnapshot& snapshot)
                en Microsoft.Reporting.LocalService.CompileReport(CatalogItemContextBase itemContext, Boolean rebuild)
                en Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
           InnerException: 
    


    byte[] byteViewer = rptCompleto.LocalReport.Render("PDF", null, out v_mimetype, out v_encoding, out extension, out v_streamids, out warnings);

    jueves, 21 de enero de 2016 7:02
  • Hola tximas, y si colocas un bloque try..catch y declaras un tipo de excepción LocalProcessingException que obtienes?

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    My Blog
    My code samples

    • Marcado como respuesta tximas martes, 26 de enero de 2016 13:07
    lunes, 25 de enero de 2016 11:44