2009-05-22 24 views

Respuesta

7

Bueno, los datos que se muestran en un DBGrid son proporcionados por el conjunto de datos adjunto a ese dbgrid, por lo que exportar datos en DBGrid a PDF significa exportar datos en su conjunto de datos a PDF.

La opción más fácil es utilizar una herramienta de Informes. Hay muchas herramientas de informes disponibles para Delphi, p. Ej. Rave Report, FastReport, Report Builder, QuickReport, etc.

Dichas herramientas le permiten diseñar un informe de impresión a partir de sus datos, y le permiten imprimir el informe o exportarlo a formatos como HTML, DOC, PDF, y más. Rave Report se envía con Delphi y puede usarlo gratis. Personalmente me gusta FastReport y lo uso en mis aplicaciones.

Otra opción es que, si tiene una impresora PDF virtual instalada en el sistema de destino, puede seleccionarla como impresora y usar la clase TPrinter de Delphi para escribir directamente en el lienzo de la impresora, y su impresora virtual PDF creará un PDF archivo para usted en lugar de imprimir sus datos en papel.

Una tercera opción es utilizar componentes de terceros que están específicamente diseñados para la manipulación de PDF y le permiten crear o editar archivos PDF en su aplicación.

Saludos

2

tratar ccsme avanzada de exportación de datos VCL

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

  • de datos (conjuntos de datos) de exportación en 17 formatos más populares: MS Access, MS Excel, MS Word, formato XML abierto, Formato de documento abierto (ODF), RTF, HTML, XML, PDF, TXT, DBF, CSV, SYLK, DIF, LaTeX, SQL y Windows Clipboard
  • Borland Delphi 5-7, 2005, 2006, CodeGear Delphi 2007, 2009 y Borland C++ Builder 5-6, C odeGear C++ Builder 2007, 2009 support
  • Exportación de datos Unicode. Codificación de texto preestablecida manualmente para datos exportados (UTF-8, UTF-16/UCS-2, UTF-32/UCS-4, Latin1, Latin2, Latin5, Latin7 y más)
  • Almacenamiento de datos para su visualización, modificación e impresión en el futuro o publicación web
  • -Fácil de usar asistente permite a los usuarios finales a la exportación de datos rápidamente
  • potentes opciones de exportación para cada formato de datos
  • 100% de código de Delphi nativo
  • No hay bibliotecas o software adicionales requeridos para operar
  • Sistema de ayuda detallado y aplicación de demostración
  • componentes de gran alcance y editores de propiedades
  • configurar los formatos de usuario para cada campo por separado apoyo
  • multilenguaje
+0

Desde $ 195, pero se ve bien. Aún buscando una solución gratuita ;-) – Mawg

1

Usted puede iterar a través de los datos usted mismo y utilizar excelentes exportación VCL eDocEngine de Gnostice. También se conecta a herramientas de informes y otros componentes.

+0

Los precios comienzan en $ 199 http://www.gnostice.com/edocengine_vcl.asp – Mawg

3

Scalabium Export suite para Delphi (incluyendo 2009) admite muchos formatos de exportación, incluidos PDF y otros formatos de oficina con y sin OLE.Los componentes de exportación se pueden usar con descendientes TDBGrid y TDataSet.

Puede usarse de forma no visual pero también ofrece asistentes de exportación configurables. Lo utilizamos con éxito en una migración de suite de aplicaciones de Delphi 7 a 2009.

+0

EUR 35 sin fuente; 50 EUR con la fuente. Se ve bien – 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

Agregue una explicación delgada de * qué * hace su código, * por qué * lo recomendaría, o * cómo * llegó a la conclusión. =) Además, está lleno de código comentado. ¿Es eso realmente necesario? –

+0

OP pidió una solución en Delphi, no en Visual Basic; aunque supongo que podría convertirlo manualmente (si es así, publique aquí, gracias) – Mawg