Dankeschön
Ja das ist schon öfters gefragt worden und auch möglich...
1) Man benutzt dazu ganz einfach das
2) Mit
3) Dann wird mittels einer eigenen Exportmethode mit den Argumenten: Pfad, Filenamen und ausgewählter Extension der Report in das definierte File exportiert.
Dazu habe ich eine einfache Export-Funktion verfasst (leichte Anlehnung an Kapitel 9)
Diese Methode kann man auch ohne ReportViewer verwenden und ruft den Export einfach über ein Button-Click-Event auf...
Funktion PrintIntoFile
Volkmar schrieb:
den voreingestellten Pfad und den Dateinamen beim Export z.B. als pdf zu verändern? Nach Möglichkeit dynamisch, so dass man das nicht immer manuell eingeben muss?
Ja das ist schon öfters gefragt worden und auch möglich...
1) Man benutzt dazu ganz einfach das
ReportViewer.ReportExport-Event
und stellt e.Cancel auf True
ein.2) Mit
e.Extension
kann man seine ausgewählte File-Extension bestimmen.3) Dann wird mittels einer eigenen Exportmethode mit den Argumenten: Pfad, Filenamen und ausgewählter Extension der Report in das definierte File exportiert.
Dazu habe ich eine einfache Export-Funktion verfasst (leichte Anlehnung an Kapitel 9)
Diese Methode kann man auch ohne ReportViewer verwenden und ruft den Export einfach über ein Button-Click-Event auf...
VB.NET-Quellcode
- Public Function PrintIntoFile(Report As LocalReport, Directory As DirectoryInfo, Filename As String, Extension As String) As String
- Dim myExtensions As New Dictionary(Of String, String) From {{"PDF", ".pdf"}, {"Excel", ".xls"}, {"Word", ".doc"}}
- Dim myFile As FileInfo
- Dim myResponse As String = "Ready..."
- '
- If Directory Is Nothing OrElse String.IsNullOrWhiteSpace(Filename) Then Return String.Concat("Argument-Error! : ", "invalid Directoy or Filename...")
- If Not myExtensions.ContainsKey(Extension) Then Return String.Concat("Argument-Error! : ", "invalid File-Extension...")
- myFile = New FileInfo(Path.Combine(Directory.Name, String.Concat(Filename, myExtensions.Item(Extension))))
- Report.Refresh()
- '
- Try
- Using fs = New FileStream(myFile.FullName, FileMode.Create)
- Dim Bytes() As Byte = {}
- Bytes = Report.Render(Extension)
- If Bytes.Length > 0 Then
- fs.Write(Bytes, 0, Bytes.Length)
- fs.Flush()
- End If
- End Using
- Catch ex As MissingReportSourceException
- myResponse = String.Concat("Report-Error! : ", ex.Message)
- IO.File.Delete(myFile.FullName)
- Catch ex As LocalProcessingException
- myResponse = String.Concat("Report-Error! : ", ex.InnerException.Message)
- IO.File.Delete(myFile.FullName)
- Catch ex As IOException
- myResponse = String.Concat("IO-Error! : ", ex.Message)
- Catch ex As Exception 'sonstiger Fehler
- myResponse = String.Concat("Unknown-Error! : ", ex.Message)
- End Try
- Return myResponse
- End Function
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()