vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 2.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Datenbanken · DataSet/DataTable   |   VB-Versionen: VB.NET16.03.06
Dataset nach PDF exportieren (.NET)

Ein Dataset mit der itextsharp.dll in eine PDF-Datei exportieren

Autor:   Stefan MährBewertung:     [ Jetzt bewerten ]Views:  24.359 
www.visualsoft-net.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Das PDF Format ist schon lange Industriestandard für das Austauschen von Dokumenten. Programmiertools für das Erstellen und Drucken von PDF-Inhalten sind meist nur von teuren Drittanbietern zu bekommen.
    Aber es geht auch kostenlos. Mit der itextsharp.dll ( http://itextsharp.sourceforge.net) bekommen wir hierzu ein mächtiges Tool frei Haus geliefert.

    Nachfolgendes kleine VB.NET 2005 WinForms-Projekt soll zeigen, wie einfach man z.B. ein Dataset in eine PDF-Datei schreiben kann. Als Datenquelle verwende ich die Northwind.mdb. Die itextsharp.dll kommt in der aktuellen Version 3.1 zum Einsatz.

    Erstellen Sie ein neues WinForms Projekt mit folgenden Komponenten auf Ihrem Formular:

    • 1 x Textbox (txtPath)
    • 1 x CommandButton (cmdPath)
    • 1 x Datagridview (gridData)
    • 1 x Progressbar (ProgressBar1)
    • 1 x CommandButton (cmdCreatePDF)

    Fügen Sie einen Verweis auf die itextsharp.dll hinzu.

    Nun zum Code.

    Unsere Imports Anweisungen:

    Imports System.Data.OleDb
    Imports iTextSharp.text
    Imports iTextSharp.text.pdf
    Imports System.IO

    Die benötigten privaten Variablen:

    Private ds As DataSet
    Private Const TABELLE As String = "Employees"

    Die Form_Load Routine:

    Private Sub frmMain_Load(ByVal sender As Object, _
      ByVal e As System.EventArgs) Handles Me.Load
     
      Me.cmdCreatePDF.Enabled = False
    End Sub

    Der Dateiauswahldialog für die Northwind.mdb:

    Private Sub cmdPath_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles cmdPath.Click
     
      Dim opendlg As New OpenFileDialog
      With opendlg
        .InitialDirectory = Application.StartupPath
        .Filter = "Access (*.mdb)|*.mdb"
        .Title = "Northwind DB"
        .FileName = "Northwind.mdb"
        If .ShowDialog = Windows.Forms.DialogResult.OK Then
          Me.txtPath.Text = .FileName
          Call LoadDS()
        End If
      End With
    End Sub

    Die Laderoutine für das Dataset:

    Private Sub LoadDS()
      Dim conn As OleDbConnection = Nothing
      Dim strConn As String = String.Empty
      Dim adapter As OleDbDataAdapter = Nothing
      Dim cmd As OleDbCommand = Nothing
      Dim strSQL As String = String.Empty
     
      Try
        Using conn
          strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &  _
            Me.txtPath.Text & ";"
          conn = New OleDbConnection(strConn)
          conn.Open()
          ds = New DataSet
          strSQL = "SELECT Title, LastName, FirstName, Format(BirthDate, " & _
            "'Short Date'), Format(HireDate, 'Short Date') FROM " & TABELLE
          cmd = New OleDbCommand(strSQL, conn)
          adapter = New OleDbDataAdapter(cmd)
          adapter.Fill(ds)
          Me.gridData.DataSource = ds.Tables(0)
        End Using
     
        Me.cmdCreatePDF.Enabled = True
     
      Catch ex As Exception
        MessageBox.Show(ex.Message)
      End Try
    End Sub

    Der CreatePDF Aufruf:

    Private Sub cmdCreatePDF_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles cmdCreatePDF.Click
     
      Dim saveDlg As New SaveFileDialog
     
      With saveDlg
        .InitialDirectory = Application.StartupPath
        .Filter = "PDF (*.pdf)|*.pdf"
        .Title = "PDF-File"
        If .ShowDialog = Windows.Forms.DialogResult.OK Then
          CreatePDF(.FileName)
        End If
      End With
    End Sub

    Die Routine die sich um das erstellen des PDF-Dokuments kümmert:

    Private Sub CreatePDF(ByVal strFilename As String)
      Dim oDoc As Document = Nothing
      Dim Writer As PdfWriter = Nothing
      Dim line As Long
      Dim colPos As Long
      Dim t As iTextSharp.text.Table = Nothing
      Dim tCell As Cell = Nothing
     
      Try
        Me.ProgressBar1.Visible = True
        Me.ProgressBar1.Minimum = 0
        Me.ProgressBar1.Maximum = ds.Tables(0).Rows.Count
     
        ' --> PDF Document erstellen
        oDoc = New Document(PageSize.A4, 20, 20, 20, 20)
        Writer = PdfWriter.GetInstance(oDoc, New FileStream(strFilename, _
          FileMode.Create))
        Writer.Open()
        oDoc.Open()
     
        ' --> Dokumententitel
        oDoc.Add(New Paragraph(TABELLE, _
          FontFactory.GetFont(FontFactory.TIMES_ROMAN, 14, style:=1)))
     
        ' -->  ContentTabelle erstellen
        t = New iTextSharp.text.Table(ds.Tables(0).Columns.Count)
        t.AutoFillEmptyCells = True
        t.BorderWidth = 0
        t.Border = 0
        t.Padding = 5
        t.WidthPercentage = 100
     
        Dim zeile As Integer = 0
     
        ' --> Headerzeile erstellen
        For Each col As DataColumn In ds.Tables(0).Columns
          tCell = New Cell(col.Caption)
          tCell.Header = True
          tCell.BackgroundColor = iTextSharp.text.Color.LIGHT_GRAY
          tCell.Border = iTextSharp.text.Rectangle.BOTTOM_BORDER
          t.AddCell(tCell, line, colPos)
          colPos += 1
        Next
        line += 1
     
        colPos = 0
     
        ' --> Datencontent erstellen
        For Each row As DataRow In ds.Tables(0).Rows
          For Each col As DataColumn In ds.Tables(0).Columns
            tCell = New Cell(row(col.Caption).ToString)
            tCell.Border = 0
            tCell.BorderWidth = 3
            t.AddCell(tCell, line, colPos)
            colPos += 1
          Next
          colPos = 0
          line += 1
          Application.DoEvents()
          Me.ProgressBar1.Value += 1
        Next
     
        ' --> Tabelle an Dokument anfügen
        oDoc.Add(t)
     
        ' --> Objekte schliessen
        oDoc.Close()
        Writer.Close()
     
        Me.ProgressBar1.Visible = False
     
        If MessageBox.Show("Erstellte Datei anzeigen?", "Frage", _
          MessageBoxButtons.YesNo, MessageBoxIcon.Question) = _
          Windows.Forms.DialogResult.Yes Then
     
          Call OpenFile(strFilename)
        End If
     
      Catch ex As Exception
        MessageBox.Show(ex.Message)
      End Try
    End Sub

    Eine Hilfsfunktion für das aufrufen der erstellten PDF-Datei:

    Private Sub OpenFile(ByVal strFile As String)
      Try
        System.Diagnostics.Process.Start(strFile)
      Catch ex As Exception
        MessageBox.Show(ex.Message)
      End Try
    End Sub

    Wie Sie sehen können ist es ein leichtes kostenlos PDF-Exporte zu erstellen.

    Dieser Tipp wurde bereits 24.359 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Aktuelle Diskussion anzeigen (3 Beiträge)

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
    (einschl. Beispielprojekt!)

    Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
    - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
    - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
    Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.

    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel