在建立表格時,如果表格内容出現跨頁顯示的時候,預設情況下該表格的表頭不會在下一頁顯示,在閱讀體驗上不是很好。下面分享一個方法如何在表格跨頁時顯示表格的表頭内容,在C#中隻需要簡單使用方法grid.RepeatHeader = true;即可。具體參考如下方法步驟。另附VB.NET代碼,有需可供參考。
1.在VS程式中添加引用Spire.PDF.dll
方法1:通過Nuget搜尋下載下傳安裝。
在“解決方案資料總管”中,滑鼠右鍵點選“添加引用”—“ 管理NuGet包”
完成安裝。引用結果:方法2:下載下傳Free Spire.PDF for .NET包到本地。解壓。在VS中的“解決方案資料總管”中,滑鼠右鍵點選“添加引用”-将解壓包Bin檔案夾下的dll添加引用至vs。
C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Grid;
using System.Drawing;
namespace RepeatTableHeaderRow
{
class Program
{
static void Main(string[] args)
{
//建立一個PDF文檔
PdfDocument pdf = new PdfDocument();
//添加一頁
PdfPageBase page = pdf.Pages.Add();
//建立PdfGrid類的對象
PdfGrid grid = new PdfGrid();
//設定單元格填充
grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
//添加表格列數
grid.Columns.Add(3);
//添加表頭行及表格資料
PdfGridRow[] pdfGridRows = grid.Headers.Add(1);
for (int i = 0; i < pdfGridRows.Length; i++)
{
pdfGridRows[i].Style.Font = new PdfTrueTypeFont(new Font("Arial", 11f, FontStyle.Regular), true);//指定字型
pdfGridRows[i].Cells[0].Value = "NAME";
pdfGridRows[i].Cells[1].Value = "SUBJECT";
pdfGridRows[i].Cells[2].Value = "SCORES";
pdfGridRows[i].Style.TextBrush = PdfBrushes.Red;
/*pdfGridRows[i].Style.Font = new PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsGothicMedium,12f,PdfFontStyle.Regular);//繪制中日韓字型的方法
pdfGridRows[i].Cells[0].Value = "이 름";
pdfGridRows[i].Cells[1].Value = "科 目";
pdfGridRows[i].Cells[2].Value = "ほしとり";
pdfGridRows[i].Style.TextBrush = PdfBrushes.Blue;
*/
}
//設定重複表頭(表格跨頁時)
grid.RepeatHeader = true;
//添加資料到表格
for (int i = 0; i < 60; i++)
{
PdfGridRow row = grid.Rows.Add();
for (int j = 0; j < grid.Columns.Count; j++)
{
row.Cells[j].Value = "(Row " + i + ", column " + j + ")";
}
}
//在PDF頁面繪制表格
grid.Draw(page, new PointF(0, 20));
//儲存文檔
pdf.SaveToFile("Result.pdf");
System.Diagnostics.Process.Start("Result.pdf");
}
}
}
執行程式後,在VS的程式項目檔案夾下可檢視生成的PDF文檔,如
C:\Users\Administrator\Documents\Visual Studio 2017\Projects\DrawTable_PDF\RepeatTableHeaderRow\bin\Debug\Result.pdf
檔案路徑也可以定義為其他路徑。
跨頁表頭效果:
VB.NET代碼
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Grid
Imports System.Drawing
Namespace RepeatTableHeaderRow
Class Program
Private Shared Sub Main(args As String())
'建立一個PDF文檔
Dim pdf As New PdfDocument()
'添加一頁
Dim page As PdfPageBase = pdf.Pages.Add()
'建立PdfGrid類的對象
Dim grid As New PdfGrid()
'設定單元格填充
grid.Style.CellPadding = New PdfPaddings(1, 1, 1, 1)
'添加表格列數
grid.Columns.Add(3)
'添加表頭行及表格資料
Dim pdfGridRows As PdfGridRow() = grid.Headers.Add(1)
For i As Integer = 0 To pdfGridRows.Length - 1
pdfGridRows(i).Style.Font = New PdfTrueTypeFont(New Font("Arial", 11F, FontStyle.Regular), True)
'指定字型
pdfGridRows(i).Cells(0).Value = "NAME"
pdfGridRows(i).Cells(1).Value = "SUBJECT"
pdfGridRows(i).Cells(2).Value = "SCORES"
'pdfGridRows[i].Style.Font = new PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsGothicMedium,12f,PdfFontStyle.Regular);'繪制中日韓字型的方法
' pdfGridRows[i].Cells[0].Value = "이 름";
' pdfGridRows[i].Cells[1].Value = "科 目";
' pdfGridRows[i].Cells[2].Value = "ほしとり";
' pdfGridRows[i].Style.TextBrush = PdfBrushes.Blue;
pdfGridRows(i).Style.TextBrush = PdfBrushes.Red
Next
'設定重複表頭(表格跨頁時)
grid.RepeatHeader = True
'添加資料到表格
For i As Integer = 0 To 59
Dim row As PdfGridRow = grid.Rows.Add()
For j As Integer = 0 To grid.Columns.Count - 1
row.Cells(j).Value = "(Row " + i + ", column " + j + ")"
Next
Next
'在PDF頁面繪制表格
grid.Draw(page, New PointF(0, 20))
'儲存文檔
pdf.SaveToFile("Result.pdf")
System.Diagnostics.Process.Start("Result.pdf")
End Sub
End Class
End Namespace
—End—