How Export Data to Table in PDF and Set Table Format with C#
Each company has their own database to save data. The save may contain staff information, finance information, customer information and so on. When needing some data to be displayed, staffs should export data.
Actually, it is common to export data to Office files or PDF because these formats are convenient for sending and printing. After exporting, we also need to set data format for making the data table be more understandable. And one well formatted data table is more appealed to readers.
Then, I will share one method about how to export data source to table in PDFand set table format. The format includes font style and color, background color and border.
The following code shows the details for exporting data to PDF table with C#. And it based on a component named Spire.PDF. Please download and install this component before using the code.
using System;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Tables;
namespace DataSource
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
// Create one page
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, margin);
float y = 10;
//title
PdfBrush brush1 = PdfBrushes.Black;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
page.Canvas.DrawString("Country List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1);
y = y + font1.MeasureString("Country List", format1).Height;
y = y + 5;
//create data table
PdfTable table = new PdfTable();
table.Style.CellPadding = 2;
table.Style.BorderPen = new PdfPen(brush1, 0.75f);
table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue;
table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f));
table.Style.AlternateStyle = new PdfCellStyle();
table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow;
table.Style.AlternateStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f));
table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions;
table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue;
table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial", 11f, FontStyle.Bold));
table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
table.Style.ShowHeader = true;
using (OleDbConnection conn = new OleDbConnection())
{
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb";
OleDbCommand command = new OleDbCommand();
command.CommandText
= " select Name,Capital,Continent,Area,Population from country ";
command.Connection = conn;
using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
table.DataSourceType = PdfTableDataSourceType.TableDirect;
table.DataSource = dataTable;
}
}
float width
= page.Canvas.ClientSize.Width
- (table.Columns.Count + 1) * table.Style.BorderPen.Width;
table.Columns[0].Width = width * 0.24f * width;
table.Columns[0].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[1].Width = width * 0.21f * width;
table.Columns[1].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[2].Width = width * 0.24f * width;
table.Columns[2].StringFormat
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
table.Columns[3].Width = width * 0.13f * width;
table.Columns[3].StringFormat
= new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle);
table.Columns[4].Width = width * 0.18f * width;
table.Columns[4].StringFormat
= new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle);
PdfLayoutResult result = table.Draw(page, new PointF(0, y));
y = y + result.Bounds.Height + 5;
PdfBrush brush2 = PdfBrushes.Gray;
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f));
page.Canvas.DrawString(String.Format("* {0} countries in the list.", table.Rows.Count),
font2, brush2, 5, y);
//Save pdf file.
doc.SaveToFile("DataSource.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("DataSource.pdf");
}
}
}
|