表格能夠直覺的傳達資料資訊,使資訊顯得條理化,便于閱讀同時也利于管理。那在PDF類型的文檔中如何來添加表格并且對表格進行格式化操作呢?使用正常方法直接在PDF中添加表格行不通,那我們可以在借助第三方元件的情況下來實作。本篇文章中将介紹如何正确使用元件 Free Spire.PDF for .NET
添加表格到PDF。該元件提供了兩個類PdfTable和PdfGrid用于建立表格,在進行代碼編輯前,需先安裝,添加Spire.PDF. dll到項目程式集中,同時添加到命名空間。下面是兩種方法來添加表格的全部代碼,供參考。
兩種類用于建立表格的異同:
PdfTable | PdfGrid | |
行 | 無API支援,可通過事件設定 | 可直接通過API設定 |
列 | 可直接通過API設定(StringFormat) | |
單元格 | ||
單元格縱向合并 | 不支援 | |
單元格橫向合并 | ||
嵌套表格 | ||
事件 | BeginCellLayout, BeginPageLayout, BeginRowLayout, EndCellLayout, EndPageLayout, EndRowLayout | BeginPageLayout, EndPageLayout |
一、通過PdfTable類來建立表格
1 using System.Drawing;
2 using Spire.Pdf;
3 using Spire.Pdf.Tables;
4 using Spire.Pdf.Graphics;
5 using System.Data;
6
7 namespace DrawTable1_PDF
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //建立一個PdfDocument類對象并向文檔新添加一頁
14 PdfDocument doc = new PdfDocument();
15 PdfPageBase page = doc.Pages.Add();
16
17 //建立一個PdfTable對象
18 PdfTable table = new PdfTable();
19 //設定字型
20 table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
21 table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
22
23 //建立一個DataTable并寫入資料
24 DataTable dataTable = new DataTable();
25 dataTable.Columns.Add("産品類型");
26 dataTable.Columns.Add("産品編号");
27 dataTable.Columns.Add("采購數額(件)");
28 dataTable.Columns.Add("所屬月份");
29
30 dataTable.Rows.Add(new string[] { "A", "00101", "35", "7月"});
31 dataTable.Rows.Add(new string[] { "B", "00102", "56", "8月"});
32 dataTable.Rows.Add(new string[] { "C", "00103", "25", "9月"});
33
34 //填充資料到PDF表格
35 table.DataSource = dataTable;
36 //顯示表頭(預設不顯示)
37 table.Style.ShowHeader = true;
38 //在BeginRowLayout事件處理方法中注冊自定義事件
39 table.BeginRowLayout += Table_BeginRowLayout;
40
41 //将表格繪入PDF并指定位置和大小
42 table.Draw(page, new RectangleF(0, 60, 200, 200));
43
44 //儲存到文檔并預覽
45 doc.SaveToFile("PDF表格_1.pdf");
46 System.Diagnostics.Process.Start("PDF表格_1.pdf");
47 }
48
49 //在自定義事件中設定行高
50 private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
51 {
52 args.MinimalHeight = 10f;
53 }
54 }
55 }
運作程式生成檔案(可在該項目檔案下bin>Debug檢視)
效果展示:
二、通過PdfGrid類來添加表格
1 using Spire.Pdf;
2 using System.Drawing;
3 using Spire.Pdf.Grid;
4 using Spire.Pdf.Graphics;
5 using Spire.Pdf.Tables;
6
7 namespace DrawTable_PDF
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 //建立一個PdfDocument類對象,并新添加一頁到PDF文檔
14 PdfDocument doc = new PdfDocument();
15 PdfPageBase page = doc.Pages.Add();
16
17 //建立一個PdfGrid對象
18 PdfGrid grid = new PdfGrid();
19 //設定單元格邊距和表格預設字型
20 grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
21 grid.Style.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
22
23 //添加一個5行6清單格到建立的PDF文檔
24 PdfGridRow row1 = grid.Rows.Add();
25 PdfGridRow row2 = grid.Rows.Add();
26 PdfGridRow row3 = grid.Rows.Add();
27 PdfGridRow row4 = grid.Rows.Add();
28 PdfGridRow row5 = grid.Rows.Add();
29 grid.Columns.Add(6);
30
31 //設定列寬
32 foreach (PdfGridColumn col in grid.Columns)
33 {
34 col.Width = 55f;
35 }
36
37 //寫入資料
38 row1.Cells[0].Value = "新入職員工基本資訊";
39 row2.Cells[0].Value = "入職時間";
40 row2.Cells[1].Value = "姓名";
41 row2.Cells[2].Value = "部門";
42 row2.Cells[3].Value = "學曆";
43 row2.Cells[4].Value = "聯系電話";
44 row2.Cells[5].Value = "正式員工";
45
46 row3.Cells[0].Value = "3月";
47 row3.Cells[1].Value = "馬超";
48 row3.Cells[2].Value = "研發部";
49 row3.Cells[3].Value = "碩士";
50 row3.Cells[4].Value = "153****6543";
51 row3.Cells[5].Value = "是";
52
53 row4.Cells[0].Value = "4月";
54 row4.Cells[1].Value = "劉陵";
55 row4.Cells[2].Value = "研發部";
56 row4.Cells[3].Value = "大學";
57 row4.Cells[4].Value = "176****5464";
58 row4.Cells[5].Value = "是";
59
60 row5.Cells[0].Value = "4月";
61 row5.Cells[1].Value = "張麗";
62 row5.Cells[2].Value = "研發部";
63 row5.Cells[3].Value = "大學";
64 row5.Cells[4].Value = "158****4103";
65 row5.Cells[5].Value = "是";
66
67 //水準和垂直方向合并單元格
68 row1.Cells[0].ColumnSpan = 6;
69 row4.Cells[0].RowSpan = 2;
70 row3.Cells[2].RowSpan = 3;
71 row4.Cells[3].RowSpan = 2;
72
73 //設定單元格内文字對齊方式
74 PdfTable table = new PdfTable();
75 row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
76 row4.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
77 row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
78 row4.Cells[3].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
79
80 //設定單元格背景顔色
81 row1.Cells[0].Style.BackgroundBrush = PdfBrushes.LightGreen;
82
83 //設定表格邊框顔色、粗細
84 PdfBorders borders = new PdfBorders();
85 borders.All = new PdfPen(Color.Black, 0.1f);
86 foreach (PdfGridRow pgr in grid.Rows)
87 {
88 foreach (PdfGridCell pgc in pgr.Cells)
89 {
90 pgc.Style.Borders = borders;
91 }
92 }
93
94 //在指定位置繪入表格
95 grid.Draw(page, new PointF(0, 40));
96
97 //儲存到文檔
98 doc.SaveToFile("PDF表格.pdf");
99 System.Diagnostics.Process.Start("PDF表格.pdf");
100 }
101 }
102 }
以上是關于元件Free Spire.PDF for .NET用于在PDF 中建立表格的方法介紹,如對您有所幫助,歡迎轉載(轉載請注明出處)