C#/VB.NET 設置PDF跨頁表格重複顯示錶頭行

在創建表格時,如果表格內容出現跨頁顯示的時候,默認情況下該表格的表頭不會在下一頁顯示,在閱讀體驗上不是很好。下面分享一個方法如何在表格跨頁時顯示錶格的表頭內容,在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—