In order to format a table in PDF, Spire.PDF provides a PdfTableStyle class that represents parameters of PDF light table and a PdfCellStyle class that represents information about cell style. This article will introduce how to set the border color of a table including table border and cell border by using the two classes mentioned above.
Code Snippets:
Step 1: Define a multidimensional array of string.
string[][] dataSource =new string[5][] {new string[] {"Name", "Capital", "Continent", "Area", "Population"}, new string[] {"Argentina","Buenos Aires", "South American", "2777815", "3230003"}, new string[] {"Bolivia","La Paz","South America","1098575","7300000"}, new string[] {"Brazil","Brasilia","South America","8511196","150400000"}, new string[] {"Canada","Ottawa","North America","9976147","26500000"} };
Step 2: Initialize a new instance of PdfDocument class and add a page to it.
PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add();
Step 3: Initialize a new instance of PdfTbale class, filling the table with the data predefined.
PdfTable table = new PdfTable(); table.DataSource = dataSource;
Step 4: Initialize an instance of PdfTableStyle class, and set the color of table border as Blue, then apply the style to PdfTable.Style.
PdfTableStyle style = new PdfTableStyle(); style.BorderPen = new PdfPen(Color.Blue, 1f); table.Style = style;
Step 5: The syntax to set style of cell border is much different from setting table border style, since PdfTable class doesn't contain a property of CellStyle. Instead, CellStyle is a property included in BeginRowLayoutEventArgs class, which is an argument of StratRowLayout event. Therefore we customize a method as below to set the color of cell border.
public static void table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args) { PdfCellStyle cellStyle = new PdfCellStyle(); cellStyle.BorderPen = new PdfPen(Color.Red, 0.5f); args.CellStyle = cellStyle; }
In the Main method, "table_BeginRowLayout" must be added to BeginRowLayout event to ensure the custom method will be invoked when the event occurs.
table.BeginRowLayout += new BeginRowLayoutEventHandler(table_BeginRowLayout);
Step 6: Draw the table on PDF page and save to file.
table.Draw(page, new PointF(0,40)); pdf.SaveToFile(@"SetBorderColor.pdf");
Output:
Full Code:
using Spire.Pdf; using Spire.Pdf.Tables; using Spire.Pdf.Graphics; using System.Drawing; namespace SetBorderColorOfTable { class Program { static void Main(string[] args) { //input data string[][] dataSource =new string[5][] {new string[] {"Name", "Capital", "Continent", "Area", "Population"}, new string[] {"Argentina","Buenos Aires", "South American", "2777815", "3230003"}, new string[] {"Bolivia","La Paz","South America","1098575","7300000"}, new string[] {"Brazil","Brasilia","South America","8511196","150400000"}, new string[] {"Canada","Ottawa","North America","9976147","26500000"} }; //initialize an instance of PdfDocument PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); //initialize an instance of PdfTable PdfTable table = new PdfTable(); table.DataSource = dataSource; //set the color of table border PdfTableStyle style = new PdfTableStyle(); style.BorderPen = new PdfPen(Color.Blue, 1f); table.Style = style; //add custom method to BeginRowLayout event table.BeginRowLayout += new BeginRowLayoutEventHandler(table_BeginRowLayout); //draw table on PDF and save file table.Draw(page, new PointF(0,40)); pdf.SaveToFile(@"SetBorderColor.pdf"); System.Diagnostics.Process.Start(@"SetBorderColor.pdf"); } //customize a method to set color of cell border public static void table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args) { PdfCellStyle cellStyle = new PdfCellStyle(); cellStyle.BorderPen = new PdfPen(Color.Red, 0.5f); args.CellStyle = cellStyle; } } }