2009-05-22 15 views

risposta

7

Beh, dati che vengono visualizzati in una DBGrid è fornito dal set di dati collegata a quella DBGrid, così l'esportazione dei dati in DBGrid in PDF significa esportare i dati nel vostro set di dati in formato PDF.

L'opzione più semplice è utilizzare uno strumento di segnalazione. Esistono molti diversi strumenti di reporting disponibili per Delphi, ad es. Rave Report, FastReport, Report Builder, QuickReport e così via.

Tali strumenti consentono di progettare un rapporto di stampa dai propri dati e consentono di stampare il rapporto o esportarlo in formati come HTML, DOC, PDF e così via. Rave Report viene spedito con Delphi e puoi usarlo gratuitamente. Personalmente mi piace FastReport e lo uso nelle mie applicazioni.

Un'altra opzione è che, se si dispone di una stampante PDF virtuale installata sul sistema di destinazione, è possibile selezionarla come stampante e utilizzare la classe TPrinter di Delphi per scrivere direttamente su tela della stampante e la stampante PDF virtuale creerà un PDF file per te piuttosto che stampare i tuoi dati su carta.

Una terza opzione consiste nell'utilizzare componenti di terze parti creati appositamente per la manipolazione di PDF e che consentono di creare o modificare file PDF nell'applicazione.

saluti

2

provare EMS Advanced Data Export VCL

http://sqlmanager.net/en/products/tools/advancedexport

  • dati (dataset) l'esportazione in 17 formati più diffusi: MS Access, MS Excel, MS Word, Open formato XML, Formato Open Document Format (ODF), RTF, HTML, XML, PDF, TXT, DBF, CSV, SYLK, DIF, LaTeX, SQL e Windows
  • Borland Delphi 5-7, 2005, 2006, CodeGear Delphi 2007, 2009 e Borland C++ Builder 5-6, C odeGear C++ Builder 2007, supporto 2009
  • Esportazione di dati Unicode. Preselezione manuale della codifica del testo per i dati esportati (UTF-8, UTF-16/UCS-2, UTF-32/UCS-4, Latin1, Latin2, Latin5, Latin7 e altri)
  • Salvataggio dei dati per visualizzazione, modifica, stampa in futuro o web pubblicazione
  • facile da usare wizard permette agli utenti finali di esportare i dati in modo rapido
  • opzioni di esportazione potenti per ogni formato di dati
  • 100% di codice nativo di Delphi
  • Nessun librerie aggiuntive o software necessari per il funzionamento
  • Sistema di guida dettagliato e applicazione dimostrativa
  • componenti potenti e proprietà redattori
  • Impostazione dei formati utente per ogni campo separatamente il supporto
  • Multilingue
+0

Da $ 195, ma sembra buono. Ancora alla ricerca di una soluzione gratuita ;-) – Mawg

1

Si possono scorrere i dati da soli e utilizzare eccellente esportazione VCL eDocEngine da Gnostice. Si collega anche agli strumenti di reporting e ad altri componenti.

+0

I prezzi partono da $ 199 http://www.gnostice.com/edocengine_vcl.asp – Mawg

3

La suite di esportazione Scalabium per Delphi (incluso il 2009) supporta molti formati di esportazione, inclusi PDF e altri formati di ufficio con e senza OLE.I componenti di esportazione possono essere utilizzati con i discendenti TDBGrid e TDataSet.

Può essere utilizzato non visivo ma offre anche procedure guidate di esportazione configurabili. Lo utilizziamo con successo in una migrazione della suite di applicazioni da Delphi 7 al 2009.

+0

EUR 35 senza fonte; 50 EUR con fonte. Sembra buono – Mawg

0
Public Sub ExportDataTableToPDF(ByVal dtImport As DataTable) 
    Dim strQuery As String = "select er_num,er_shortd,er_longd,er_severity from mv_error" 
    Dim doc As New Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35) 
    Try 

     '==================================================================== 
     'Dim str As String = DateTime.Now.ToString("yyyyMMddHHmmssff") 
     'Dim sWebSettingPath As String = ConfigurationSettings.AppSettings("ExptLoctPath") 
     'Dim str1 As String = "E:\ExportPdf_File" 
     'Dim WorkingFile As String 
     'Dim s As String 
     'If (Directory.Exists(sWebSettingPath)) Then 
     ' s = "already exists" 
     ' WorkingFile = Path.Combine(sWebSettingPath, "" & str & " DataTestData.pdf") 
     'Else 
     ' Dim ss As String = "C:\ReportPDF" 
     ' WorkingFile = Path.Combine(str1, "" & str & " DataTestData.pdf") 
     ' Directory.CreateDirectory(ss) 
     'End If 


     '==================================================================== 

     'Folder Exists in Particular folder or not cheak ifnot create a folder 
     Dim strDateTime As String = DateTime.Now.ToString("yyyyMMddHHmmssff") 
     Dim sWebSettingPath As String = ConfigurationSettings.AppSettings("ExptLoctPath") 
     Dim str1 As String = "E:\ExportPdf_File" 
     Dim WorkingFile As String 
     Dim s As String 
     If (Directory.Exists(sWebSettingPath)) Then 
      s = "already exists" 
      WorkingFile = Path.Combine(sWebSettingPath, "" & strDateTime & "_DataTestData.pdf") 
     Else 
      Dim sWebStingNotPath As String = "C:\ReportPDFTest" 
      Directory.CreateDirectory(sWebStingNotPath) 
      WorkingFile = Path.Combine(sWebStingNotPath, "" & strDateTime & " DataTestData.pdf") 

     End If 
     '==================================================================== 

     Dim fs As New FileStream(WorkingFile, FileMode.Create, FileAccess.Write, FileShare.None) 


     'Create Document class object and set its size to letter and give space left, right, Top, Bottom Margin 
     PdfWriter.GetInstance(doc, fs) 
     ' Dim wri As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("C:\Documents and Settings\lessly.l\Desktop\iTextSharp\Test11.pdf", FileMode.Create)) 
     doc.Open() 
     'Open Document to write 
     Dim font8 As Font = FontFactory.GetFont("ARIAL", 7) 

     'Write some content 
     Dim paragraph As New Paragraph("Team :: CataPult") 

     Dim dt As DataTable = dtImport 

     If dt IsNot Nothing Then 
      'Craete instance of the pdf table and set the number of column in that table 
      Dim PdfTable As New PdfPTable(dt.Columns.Count) 


      Dim PdfPCell As PdfPCell = Nothing 
      Dim pdfrow As PdfPRow = Nothing 


      For column As Integer = 0 To dt.Columns.Count - 1 

       PdfTable.HeaderRows = dt.Columns.Count 


       PdfPCell = New PdfPCell(New Phrase(New Chunk(dt.Columns(column).Caption.ToString().ToUpper, New Font(Font.HELVETICA, 8.0F, Font.BOLD, Color.WHITE)))) 
       PdfPCell.BackgroundColor = New Color(System.Drawing.ColorTranslator.FromHtml("#66CCFF")) 

       PdfTable.AddCell(PdfPCell) 

      Next 

      'Each Row Values added 

      For rows As Integer = 0 To dt.Rows.Count - 1 
       For column As Integer = 0 To dt.Columns.Count - 1 
        PdfTable.HeaderRows = dt.Columns.Count 
        PdfPCell = New PdfPCell(New Phrase(New Chunk(dt.Rows(rows)(column).ToString(), font8))) 
        PdfTable.AddCell(PdfPCell) 
       Next 
      Next 

      PdfTable.SpacingBefore = 15.0F 
      ' Give some space after the text or it may overlap the table 
      doc.Add(paragraph) 
      ' add paragraph to the document 
      ' add pdf table to the document 
      doc.Add(PdfTable) 

     End If 
    Catch docEx As DocumentException 
     'handle pdf document exception if any 
    Catch ioEx As IOException 
     ' handle IO exception 
    Catch ex As Exception 
     ' ahndle other exception if occurs 
    Finally 
     'Close document and writer 

     doc.Close() 
    End Try 
End Sub 
+0

Aggiungi una breve spiegazione di * cosa * fa il tuo codice, * perché * lo consiglieresti, o * come * sei arrivato alla conclusione. =) Inoltre, è pieno di codice commentato. È davvero necessario? –

+0

OP ha richiesto una soluzione in Delphi, non in Visual Basic; anche se suppongo che egli potrebbe convertire manualmente questo (in tal caso, si prega di postare qui, grazie) – Mawg