• 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:UsersAdministratorDocumentsVisual Studio 2017ProjectsDrawTable_PDFRepeatTableHeaderRowinDebugResult.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—

  • 相关阅读:
    spring mvc全局异常处理
    spring mvc URL忽略大小写
    easyui datagrid 加载两次请求,触发两次ajax 请求 问题
    根据多列去除重复记录,保留具有特殊列值的行,去除其他行
    ibatis 批量插入oracle总结
    ibatis 参数错误,无效字符
    jvm 原理和优化
    tomcat 内存问题 xms xmx permsize maxPermsize
    java 中与 或 非 异或 和位移运算
    项目jar包管理,使用 .userlibraries 文件增加jar包的可移植性,明确jar包依赖,多项目共用jar包里
  • 原文地址:https://www.cnblogs.com/Yesi/p/15001773.html
Copyright © 2020-2023  润新知