【Spire.PDF】Spire.PDF导出报告之三表格Grid

记录学习过程

创建日期:2019-04-11

【Spire.PDF】Spire.PDF导出报告之一获取与破解
【Spire.PDF】Spire.PDF导出报告之二基本绘制Draw
【Spire.PDF】Spire.PDF导出报告之三表格Grid
【Spire.PDF】Spire.PDF导出报告之四报告模板
【Spire.PDF】Spire.PDF导出报告之实用工具类PdfUtility

Spire.PDF导出报告之三表格Grid

表格可实现数据展示和布局排版

#region 表格Grid

/// <summary>
/// 表格
/// </summary>
public PdfGrid Grid { get; private set; }
/// <summary>
/// 表格的行
/// </summary>
public PdfGridRow GridRow { get; set; }

/// <summary>
/// 表格初始化
/// </summary>
/// <param name="colWidths">列宽度集合</param>
public void GridInit(float[] colWidths)
{
    Grid = new PdfGrid();
    Grid.Columns.Add(colWidths.Length);//增加列
    Grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
    Grid.Style.Font = Font(10);//设置字体

    //设置各列宽度
    for (int i = 0; i < colWidths.Length; i++)
    {
        Grid.Columns[i].Width = colWidths[i];
    }
}

/// <summary>
/// 单元格文本对齐方式 为null时,左对齐
/// </summary>
public PdfTextAlignment[] GridTextAlignments;
/// <summary>
/// 单元格文本字体 为null时,字体10
/// </summary>
public PdfTrueTypeFont[] GridTextFonts;
/// <summary>
/// 单元格文本颜色 为null时,颜色黑色
/// </summary>
public PdfSolidBrush[] GridTextColors;

/// <summary>
/// 表格添加行
/// </summary>
/// <param name="rowHeight">行高</param>
public void GridRowsAdd(float rowHeight = 18f)
{
    GridRow = Grid.Rows.Add();
    GridRow.Height = rowHeight;//设置行高
    for (int i = 0; i < GridRow.Cells.Count; i++)
    {
        GridRow.Cells[i].StringFormat = new PdfStringFormat(
            GridTextAlignments == null ? PdfTextAlignment.Left : GridTextAlignments[i], PdfVerticalAlignment.Middle);
    }
}

/// <summary>
/// 设置单元格值
/// </summary>
/// <param name="values">单元格的值集合</param>
public void SetGridRowCellsValue(string[] values)
{
    for (int i = 0; i < GridRow.Cells.Count; i++)
    {
        GridRow.Cells[i].Value = values[i];
        GridRow.Cells[i].Style.Font = GridTextFonts == null ? Grid.Style.Font : GridTextFonts[i];
        GridRow.Cells[i].Style.TextBrush = GridTextColors == null ? new PdfSolidBrush(Color.Black) : GridTextColors[i];
    }
}

/// <summary>
/// 添加行并设置内容
/// </summary>
/// <param name="rowWidth">行高</param>
public void GridRowsAdd(params string[] values)
{
    GridRowsAdd();
    SetGridRowCellsValue(values);
}

/// <summary>
/// 设置表格边框样式
/// </summary>
public void SetBorders()
{
    PdfBorders borders = new PdfBorders
    {
        All = new PdfPen(Color.Transparent, 0.1f)
    };
    foreach (PdfGridRow row in Grid.Rows)
    {
        foreach (PdfGridCell cell in row.Cells)
        {
            cell.Style.Borders = borders;
        }
    }
}

/// <summary>
/// 将表格绘制到页面
/// </summary>
/// <param name="pointf">表格的位置</param>
/// <param name="isNoBorder">是否无边框(默认无边框)</param>
/// <param name="page">默认当前页面(创建的最后一个页面)</param>
public void GridDraw(PointF pointf, bool isNoBorder = true, PdfPageBase page = null)//测试改为false
{
    if (isNoBorder)
        SetBorders();
    Grid.Draw(page ?? Page, pointf);
}

#endregion 表格Grid

表格数据

设置ID,姓名,性别居中对齐,设置爱好,个人介绍左对齐

PdfUtility pdfUtility = new PdfUtility();
pdfUtility.Init(); 
pdfUtility.PagesAdd();
pdfUtility.GridInit(new float[5] { 30, 30,30,100,120 });
pdfUtility.GridTextAlignments = new PdfTextAlignment[5] {
PdfTextAlignment.Center, PdfTextAlignment.Center, PdfTextAlignment.Center,
PdfTextAlignment.Left, PdfTextAlignment.Left };

PdfTrueTypeFont Font10 = pdfUtility.Font(10,true);
PdfTrueTypeFont Font8 = pdfUtility.Font(8);
PdfSolidBrush FontColorBlack = pdfUtility.BrushColor(Color.Black);
PdfSolidBrush FontColorGray = pdfUtility.BrushColor(Color.Gray);
//标题
pdfUtility.GridTextFonts = new PdfTrueTypeFont[5] { Font10, Font10, Font10, Font10,Font10 };
pdfUtility.GridTextColors = new PdfSolidBrush[5] { FontColorBlack, FontColorBlack, FontColorBlack, FontColorBlack, FontColorBlack };
pdfUtility.GridRowsAdd("ID", "姓名", "性别","爱好","个人介绍");
//内容
pdfUtility.GridTextFonts = new PdfTrueTypeFont[5] { Font8, Font8, Font8, Font8, Font8 };
pdfUtility.GridTextColors = new PdfSolidBrush[5] { FontColorGray, FontColorGray, FontColorGray, FontColorGray, FontColorGray };
pdfUtility.GridRowsAdd("1001", "小明", "男", "学习", "哈哈哈哈哈哈哈");
pdfUtility.GridRowsAdd("1002", "小红", "女", "听音乐,跳舞", "哈哈哈");
pdfUtility.GridRowsAdd("1003", "小刚", "男", "爬山,探险", "哈哈");
pdfUtility.GridRowsAdd("1004", "小杰", "男", "看书,看电影", "哈哈哈哈哈哈哈哈哈哈");
pdfUtility.GridDraw(new PointF(10, 120), false);

pdfUtility.SaveToPDF("PDFGrid");

效果
在这里插入图片描述

表格布局

实现单人信息显示,标题右对齐,内容左对齐
即如下布局
在这里插入图片描述

PdfUtility pdfUtility = new PdfUtility();
pdfUtility.Init(); 
pdfUtility.PagesAdd();

pdfUtility.GridInit(new float[2] { 100, 150 });
pdfUtility.GridTextAlignments = new PdfTextAlignment[2] { PdfTextAlignment.Right, PdfTextAlignment.Left };
pdfUtility.GridTextFonts = null;
pdfUtility.GridTextColors = null;
pdfUtility.GridRowsAdd("ID:", "1001");
pdfUtility.GridRowsAdd("姓名:", "哈哈");
pdfUtility.GridRowsAdd("性别:", "男");
pdfUtility.GridRowsAdd("爱好:", "学习");
pdfUtility.GridRowsAdd("个人介绍:", "哈哈哈哈哈哈哈");
pdfUtility.GridDraw(new PointF(10, 10), false);
pdfUtility.SaveToPDF("PDFGrid");

效果

在这里插入图片描述
去除边框

pdfUtility.GridDraw(new PointF(10, 10), true);
pdfUtility.SaveToPDF("PDFGrid");

在这里插入图片描述

【Spire.PDF】Spire.PDF导出报告之一获取与破解
【Spire.PDF】Spire.PDF导出报告之二基本绘制Draw
【Spire.PDF】Spire.PDF导出报告之三表格Grid
【Spire.PDF】Spire.PDF导出报告之四报告模板
【Spire.PDF】Spire.PDF导出报告之实用工具类PdfUtility

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreAmbWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值