C#/VB.NET: PDF로 테이블 만들기

2023-08-24 08:15:44

테이블을 사용하면 시각적으로 보기 좋은 방식으로 행과 열에 표시된 데이터에 빠르고 효율적으로 액세스할 수 있습니다. 표로 제시될 때 데이터는 단순히 단어로 사용될 때보다 더 큰 영향을 미치며 독자가 데이터 간의 관계를 쉽게 비교하고 이해할 수 있도록 합니다. 이 기사에서는 다음을 수행하는 방법을 배웁니다 C# 및 VB.NET에서 PDF로 테이블 만들기 Spire.PDF for .NET사용.

Spire.PDF for .NET는 PDF 문서의 테이블 작업을 위해 PdfTablePdfGrid 클래스를 제공합니다. PdfTable 클래스는 너무 많은 서식을 지정하지 않고 간단하고 일반 테이블을 빠르게 만드는 데 사용되는 반면 PdfGrid 클래스는 더 복잡한 테이블을 만드는 데 사용됩니다.

아래 표에는 이 두 클래스의 차이점이 나열되어 있습니다.

PDF 테이블 Pdf그리드
포맷팅
이벤트를 통해 설정할 수 있습니다. API 지원이 없습니다. API를 통해 설정할 수 있습니다.
API(StringFormat)를 통해 설정할 수 있습니다. API(StringFormat)를 통해 설정할 수 있습니다.
이벤트를 통해 설정할 수 있습니다. API 지원이 없습니다. API를 통해 설정할 수 있습니다.
기타
열 범위 지원하지 않습니다. API를 통해 설정할 수 있습니다.
행 범위 이벤트를 통해 설정할 수 있습니다. API 지원이 없습니다. API를 통해 설정할 수 있습니다.
중첩 테이블 이벤트를 통해 설정할 수 있습니다. API 지원이 없습니다. API를 통해 설정할 수 있습니다.
이벤트 BeginCellLayout,  EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. BeginPageLayout, EndPageLayout.

다음 섹션에서는 각각 PdfTable 클래스와 PdfGrid 클래스를 사용하여 PDF로 표를 만드는 방법을 보여줍니다.

Spire.PDF for .NET 설치

먼저 Spire.PDF for .NET 패키지에 포함된 DLL 파일을 .NET 프로젝트의 참조로 추가해야 합니다. DLL 파일은 이 링크 에서 다운로드하거나 NuGet을 통해 설치할 수 있습니다.

PM> Install-Package Spire.PDF

PdfTable 클래스를 사용하여 테이블 만들기

다음은 PdfTable 클래스를 사용하여 테이블을 만드는 단계입니다.

  • PdfDocument 개체를 만듭니다.
  • PdfDocument.Pages.Add() 메서드를 사용하여 페이지를 추가합니다.
  • Pdftable 개체를 만듭니다.
  • PdfTable.Style 속성을 통해 테이블 스타일을 설정합니다.
  • PdfTable.DataSource 속성을 통해 테이블에 데이터를 삽입합니다.
  • BeginRowLayout 이벤트를 통해 행 높이와 행 색상을 설정합니다.
  • PdfTable.Draw() 메서드를 사용하여 PDF 페이지에 테이블을 그립니다.
  • PdfDocument.SaveToFile() 메서드를 사용하여 문서를 PDF 파일로 저장합니다.
  • C#
  • VB.NET
using System;
    using System.Data;
    using System.Drawing;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Tables;
    
    namespace CreateTable
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Add a page
                PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));
    
                //Create a PdfTable object
                PdfTable table = new PdfTable();
    
                //Set font for header and the rest cells
                table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Regular), true);
                table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Bold), true);
    
                //Crate a DataTable
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add("ID");
                dataTable.Columns.Add("Name");
                dataTable.Columns.Add("Department");
                dataTable.Columns.Add("Position");
                dataTable.Columns.Add("Level");
                dataTable.Rows.Add(new string[] { "1", "David", "IT", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "3", "Julia", "HR", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "4", "Sophie", "Marketing", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "7", "Wickey", "Marketing", "Sales Rep", "2" });
                dataTable.Rows.Add(new string[] { "9", "Wayne", "HR", "HR Supervisor", "2" });
                dataTable.Rows.Add(new string[] { "11", "Mia", "Dev", "Developer", "2" });
    
                //Set the datatable as the data source of table
                table.DataSource = dataTable;
    
                //Show header(the header is hidden by default)
                table.Style.ShowHeader = true;
    
                //Set font color and backgroud color of header row
                table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.Gray;
                table.Style.HeaderStyle.TextBrush = PdfBrushes.White;
    
                //Set text alignment in header row
                table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
    
                //Set text alignment in other cells
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
                }
    
                //Register with BeginRowLayout event
                table.BeginRowLayout += Table_BeginRowLayout;
    
                //Draw table on the page
                table.Draw(page, new PointF(0, 30));
    
                //Save the document to a PDF file
                doc.SaveToFile("PdfTable.pdf");
            }
    
            //Event handler
            private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
            {
                //Set row height
                args.MinimalHeight = 20f;
    
                //Alternate row color
                if (args.RowIndex < 0)
                {
                    return;
                }
                if (args.RowIndex % 2 == 1)
                {
                    args.CellStyle.BackgroundBrush = PdfBrushes.LightGray;
                }
                else
                {
                    args.CellStyle.BackgroundBrush = PdfBrushes.White;
                }
            }
        }
    }

C#/VB.NET: Create Tables in PDF

PdfGrid 클래스를 사용하여 테이블 만들기

다음은 PdfGrid 클래스를 사용하여 테이블을 만드는 단계입니다.

  • PdfDocument 개체를 만듭니다.
  • PdfDocument.Pages.Add() 메서드를 사용하여 페이지를 추가합니다.
  • PdfGrid 개체를 만듭니다.
  • PdfGrid.Style 속성을 통해 테이블 스타일을 설정합니다.
  • PdfGrid.Rows.Add() 메서드를 사용하여 테이블에 행을 추가합니다.
  • PdfGridRow.Cells[index].Value 속성을 통해 특정 셀에 데이터를 삽입합니다.
  • PdfGridRow.RowSpan 또는 PdfGridRow.ColumnSpan 속성을 통해 열 또는 행에 걸쳐 셀을 확장합니다.
  • PdfGridRow.Cells[index].StringFormatPdfGridRow.Cells[index].Style 속성을 통해 특정 셀의 서식을 설정합니다.
  • PdfGrid.Draw() 메서드를 사용하여 PDF 페이지에 테이블을 그립니다.
  • PdfDocument.SaveToFile() 메서드를 사용하여 문서를 PDF 파일로 저장합니다.
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Grid;
    using System.Drawing;
    
    namespace CreateGrid
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Add a page
                PdfPageBase page = doc.Pages.Add(PdfPageSize.A4,new PdfMargins(40));
    
                //Create a PdfGrid
                PdfGrid grid = new PdfGrid();
    
                //Set cell padding
                grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
    
                //Set font
                grid.Style.Font = new PdfTrueTypeFont(new Font("Times New Roman", 13f, FontStyle.Regular), true);
    
                //Add rows
                PdfGridRow row1 = grid.Rows.Add();
                PdfGridRow row2 = grid.Rows.Add();
                PdfGridRow row3 = grid.Rows.Add();
                PdfGridRow row4 = grid.Rows.Add();
                grid.Columns.Add(4);
    
                //Set column width
                foreach (PdfGridColumn col in grid.Columns)
                {
                    col.Width = 110f;
                }
    
                //Write data into specific cells
                row1.Cells[0].Value = "Order and Payment Status";
                row2.Cells[0].Value = "Order number";
                row2.Cells[1].Value = "Date";
                row2.Cells[2].Value = "Customer";
                row2.Cells[3].Value = "Paid or not";
                row3.Cells[0].Value = "00223";
                row3.Cells[1].Value = "2022/06/02";
                row3.Cells[2].Value = "Brick Lane Realty";
                row3.Cells[3].Value = "Yes";
                row4.Cells[0].Value = "00224";
                row4.Cells[1].Value = "2022/06/03";
                row4.Cells[3].Value = "No";
    
                //Span cell across columns
                row1.Cells[0].ColumnSpan = 4;
    
                //Span cell across rows
                row3.Cells[2].RowSpan = 2;
    
                //Set text alignment of specific cells
                row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
                row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
    
                //Set background color of specific cells
                row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Orange;
                row4.Cells[3].Style.BackgroundBrush = PdfBrushes.LightGray;
    
                //Format cell border
                PdfBorders borders = new PdfBorders();
                borders.All = new PdfPen(Color.Orange, 0.8f);
                foreach (PdfGridRow pgr in grid.Rows)
                {
                    foreach (PdfGridCell pgc in pgr.Cells)
                    {
                        pgc.Style.Borders = borders;
                    }
                }
    
                //Draw table on the page
                grid.Draw(page, new PointF(0, 30));
    
                //Save the document to a PDF file
                doc.SaveToFile("PdfGrid.pdf");
            }
        }
    }

C#/VB.NET: Create Tables in PDF

임시 면허 신청

생성된 문서에서 평가 메시지를 제거하거나 기능 제한을 제거하려면 다음을 수행하십시오 30일 평가판 라이선스 요청 자신을 위해.

또한보십시오