Creare pdf di un report senza aprire prima l'anteprima

di il
5 risposte

Creare pdf di un report senza aprire prima l'anteprima

Ho creato un report con windows report in vb2015 di un database in access, ora vorrei esportarlo in PDF senza aprire per forza l'anteprima.
So che si può fare con il LocalReport ma non riesco a capire come fare. Senza linkarmi siti che sicuramente ho già visitato senza riuscire nella mia impresa, potreste dirmi che codice utilizzare per fare questo?
Questo è il codice della form contenente il mio report:

Public Class Form4
Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ComuniItalianiTableAdapter.Fill(Me.Comuni_ItalianiDataSet.ComuniItaliani)
Me.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
Me.ReportViewer1.RefreshReport()
End Sub
End Class

Io ho fatto un button in cui provo a scrivere:
Form4.reportviewer1.localereport("PDF") 'Cerco di dirgli di creare il pdf del report se il comando funzionasse come dovrebbe utilizzerei poi un savedialog per salvare il file dove preferisco.

5 Risposte

  • Re: Creare pdf di un report senza aprire prima l'anteprima

    Senza linkarmi siti che sicuramente ho già visitato
    Bella questa ... e come si fa a sapere quali hai visitato per non proporteli ???

    Comunque, i dati sono creati con

    ReportViewer1.LocalReport.Render("PDF")

    il risultato dovrai assegnarlo ad un vettore di byte da salvare in binario su file.
  • Re: Creare pdf di un report senza aprire prima l'anteprima

    Grazie per la risposta.
            Dim byteViewer As Byte() = Form4.ReportViewer1.LocalReport.Render("PDF")
            Dim saveFileDialog1 As New SaveFileDialog()
            saveFileDialog1.Filter = "*PDF files (*.pdf)|*.pdf"
            saveFileDialog1.FilterIndex = 2
            saveFileDialog1.RestoreDirectory = True
            saveFileDialog1.ShowDialog()
            Dim newFile As New FileStream(saveFileDialog1.FileName & ".pdf", FileMode.Create)
            newFile.Write(byteViewer, 0, byteViewer.Length)
            newFile.Close()
    Crea il pdf con solo la prima riga scritta a meno che non apra l'anteprima di stampa, ma io vorrei evitare che la debba aprire per forza.
    Potrei risolvere aprendo e rendendo invisibile la form del report, ma non è un metodo "bello". Qualcuno conosce un metodo più diretto?
  • Re: Creare pdf di un report senza aprire prima l'anteprima

    Ho solo provato con un nome di file fisso (Risultato.pdf), in questo modo
    
            ComuniItalianiTableAdapter.Fill(Comuni_ItalianiDataSet.ComuniItaliani)
            ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout)
            ReportViewer1.Visible = False
            ReportViewer1.RefreshReport()
            Dim bytes As Byte() = ReportViewer1.LocalReport.Render("PDF")
            Using fs As New System.IO.FileStream("Risultato.pdf", System.IO.FileMode.Create)
                fs.Write(bytes, 0, bytes.Length)
                fs.Close()
            End Using
    
    e funziona (ovviamente nascondendo il Report) con tutte le righe.

    Oppure devi usare, adattandolo alle tue esigenze, questo esempio di Microsoft

    https://msdn.microsoft.com/it-it/library/ms252091.asp
  • Re: Creare pdf di un report senza aprire prima l'anteprima

    Grazie si comunque quel sito lo avevo già visto solo che non ero riuscito ad adattarlo alle mie esigenze. (MSDN alle volte complica le cose secondo me)
    Non importa va bene così, faccio che nascondere il report, almeno in pdf,word,excel posso esportare senza visualizzare l'anteprima.
  • Re: Creare pdf di un report senza aprire prima l'anteprima

    enricotb1994 ha scritto:


    (MSDN alle volte complica le cose secondo me)
    Non sono d'accordo, ovviamente è la mia opinione.

    MSDN è molto chiaro, ovviamente sono gli argomenti trattati che, se non si conoscono, fanno apparire tutto difficile.
    Se c'è scritto che si fa in quel modo è solo perché si fa in quel modo e non ce n'è un altro.
Devi accedere o registrarti per scrivere nel forum
5 risposte