天天看點

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

在建立表格時,如果表格内容出現跨頁顯示的時候,預設情況下該表格的表頭不會在下一頁顯示,在閱讀體驗上不是很好。下面分享一個方法如何在表格跨頁時顯示表格的表頭内容,在C#中隻需要簡單使用方法grid.RepeatHeader = true;即可。具體參考如下方法步驟。另附VB.NET代碼,有需可供參考。

1.在VS程式中添加引用Spire.PDF.dll

方法1:通過Nuget搜尋下載下傳安裝。

在“解決方案資料總管”中,滑鼠右鍵點選“添加引用”—“ 管理NuGet包”

C#/VB.NET 設定PDF跨頁表格重複顯示表頭行
C#/VB.NET 設定PDF跨頁表格重複顯示表頭行
C#/VB.NET 設定PDF跨頁表格重複顯示表頭行
完成安裝。引用結果:
C#/VB.NET 設定PDF跨頁表格重複顯示表頭行

方法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

檔案路徑也可以定義為其他路徑。

跨頁表頭效果:

C#/VB.NET 設定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—

繼續閱讀