2009-05-22 29 views

Trả lời

7

Vâng, dữ liệu được hiển thị trong DBGrid được cung cấp bởi tập dữ liệu được đính kèm với dbgrid đó, vì vậy xuất dữ liệu trong DBGrid sang PDF có nghĩa là xuất dữ liệu trong tập dữ liệu của bạn sang PDF.

Tùy chọn dễ nhất là sử dụng công cụ Báo cáo. Có nhiều công cụ báo cáo khác nhau có sẵn cho Delphi, ví dụ: Báo cáo Rave, FastReport, Trình tạo báo cáo, QuickReport, v.v.

Công cụ này cho phép bạn thiết kế báo cáo in từ dữ liệu của mình và cho phép bạn in báo cáo hoặc xuất báo cáo sang các định dạng như HTML, DOC, PDF, v.v. Báo cáo Rave được vận chuyển với Delphi và bạn có thể sử dụng nó miễn phí. Cá nhân tôi thích FastReport và sử dụng nó trong các ứng dụng của tôi.

Một tùy chọn khác là nếu bạn đã cài đặt máy in PDF ảo trên hệ thống đích, bạn có thể chọn máy in làm máy in và sử dụng lớp TPrinter của Delphi để viết trực tiếp trên canvas máy in và máy in PDF ảo của bạn sẽ tạo PDF cho bạn thay vì in dữ liệu trên giấy.

Tùy chọn thứ ba là sử dụng các thành phần của bên thứ ba được xây dựng riêng cho thao tác PDF và cho phép bạn tạo hoặc chỉnh sửa các tệp PDF trong ứng dụng của mình.

Trân

2

thử EMS dữ liệu tiên tiến xuất khẩu VCL

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

  • dữ liệu (Datasets) xuất khẩu vào 17 định dạng phổ biến nhất: MS Access, MS Excel, MS Word, Open Định dạng XML, Định dạng tài liệu mở (ODF), RTF, HTML, XML, PDF, TXT, DBF, CSV, SYLK, DIF, LaTeX, SQL và Windows Clipboard
  • Borland Delphi 5-7, 2005, 2006, CodeGear Delphi 2007, 2009 và Borland C++ Builder 5-6, C odeGear C++ Builder 2007, 2009 hỗ trợ
  • Xuất dữ liệu Unicode. Mã hóa văn bản được đặt trước theo cách thủ công cho dữ liệu được xuất (UTF-8, UTF-16/UCS-2, UTF-32/UCS-4, Latin1, Latin2, Latin5, Latin7 và hơn thế nữa)
  • Lưu dữ liệu để xem, sửa đổi, in trong tương lai hoặc web ấn
  • Easy-to-sử dụng thuật sĩ cho phép người dùng cuối cùng của bạn để xuất dữ liệu một cách nhanh chóng
  • tùy chọn xuất khẩu mạnh mẽ cho mỗi định dạng dữ liệu
  • 100% mã nguồn gốc Delphi
  • Không thư viện bổ sung hoặc phần mềm cần thiết để vận hành
  • Hệ thống trợ giúp chi tiết và ứng dụng demo
  • thành phần mạnh mẽ và tài sản biên tập
  • Thiết lập định dạng sử dụng cho từng lĩnh vực riêng biệt
  • đa ngôn ngữ hỗ trợ
+0

Từ $ 195, nhưng có vẻ tốt. Vẫn đang tìm kiếm giải pháp miễn phí ;-) – Mawg

1

Bạn có thể lặp qua các dữ liệu bản thân và sử dụng tuyệt vời xuất khẩu VCL eDocEngine từ Gnostice. Nó cũng kết nối với các công cụ báo cáo và các thành phần khác.

+0

Giá bắt đầu từ $ 199 http://www.gnostice.com/edocengine_vcl.asp – Mawg

3

Scalabium Bộ xuất cho Delphi (bao gồm 2009) hỗ trợ nhiều định dạng xuất, bao gồm PDF và các định dạng văn phòng khác có và không có OLE.Các thành phần xuất khẩu có thể được sử dụng với con cháu TDBGrid và TDataSet.

Nó có thể được sử dụng không trực quan nhưng cũng cung cấp trình hướng dẫn xuất có thể định cấu hình. Chúng tôi sử dụng thành công nó trong một ứng dụng di cư từ Delphi 7 đến 2009.

+0

nguồn EUR 35 wthout; 50 EUR với nguồn. Có vẻ tốt – 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

Vui lòng thêm giải thích mỏng về * mã * của bạn, * tại sao * bạn nên giới thiệu nó, hoặc * cách * bạn đi đến kết luận. =) Ngoài ra, nó đầy mã nhận xét. Đó có phải là * thực sự * cần thiết không? –

+0

OP yêu cầu một giải pháp trong Delphi, không phải Visual Basic; mặc dù tôi cho rằng anh ấy _could_ tự chuyển đổi điều này (nếu có, vui lòng đăng ở đây, cảm ơn) – Mawg

Các vấn đề liên quan