[.NET开发] C# 如何在PDF文档中创建表格
表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理。那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组件的情况下来实现。本篇文章中将介绍如何正确使用组件Free Spire.PDF for .NET添加表格到PDF。该组件提供了两个类PdfTable和PdfGrid用于创建表格,在进行代码编辑前,需先安装,添加Spire.PDF. dll到项目程序集中,同时添加到命名空间。下面是两种方法来添加表格的全部代码,供参考。
一、通过PdfTable类来创建表格
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Tables;
using Spire.Pdf.Graphics;
using System.Data;
namespace DrawTable1_PDF
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument类对象并向文档新添加一页
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.Pages.Add();
//创建一个PdfTable对象
PdfTable table = new PdfTable();
//设置字体
table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
//创建一个DataTable并写入数据
DataTable dataTable = new DataTable();
dataTable.Columns.Add("产品类型");
dataTable.Columns.Add("产品编号");
dataTable.Columns.Add("采购数额(件)");
dataTable.Columns.Add("所属月份");
dataTable.Rows.Add(new string[] { "A", "00101", "35", "7月"});
dataTable.Rows.Add(new string[] { "B", "00102", "56", "8月"});
dataTable.Rows.Add(new string[] { "C", "00103", "25", "9月"});
//填充数据到PDF表格
table.DataSource = dataTable;
//显示表头(默认不显示)
table.Style.ShowHeader = true;
//在BeginRowLayout事件处理方法中注册自定义事件
table.BeginRowLayout += Table_BeginRowLayout;
//将表格绘入PDF并指定位置和大小
table.Draw(page, new RectangleF(0, 60, 200, 200));
//保存到文档并预览
doc.SaveToFile("PDF表格_1.pdf");
System.Diagnostics.Process.Start("PDF表格_1.pdf");
}
//在自定义事件中设置行高
private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
{
args.MinimalHeight = 10f;
}
}
}
复制代码
运行程序生成文件(可在该项目文件下bin>Debug查看)
效果展示:
二、通过PdfGrid类来添加表格
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Grid;
using Spire.Pdf.Graphics;
using Spire.Pdf.Tables;
namespace DrawTable_PDF
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument类对象,并新添加一页到PDF文档
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.Pages.Add();
//创建一个PdfGrid对象
PdfGrid grid = new PdfGrid();
//设置单元格边距和表格默认字体
grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
grid.Style.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);
//添加一个5行6列表格到新建的PDF文档
PdfGridRow row1 = grid.Rows.Add();
PdfGridRow row2 = grid.Rows.Add();
PdfGridRow row3 = grid.Rows.Add();
PdfGridRow row4 = grid.Rows.Add();
PdfGridRow row5 = grid.Rows.Add();
grid.Columns.Add(6);
//设置列宽
foreach (PdfGridColumn col in grid.Columns)
{
col.Width = 55f;
}
//写入数据
row1.Cells[0].Value = "新入职员工基本信息";
row2.Cells[0].Value = "入职时间";
row2.Cells[1].Value = "姓名";
row2.Cells[2].Value = "部门";
row2.Cells[3].Value = "学历";
row2.Cells[4].Value = "联系电话";
row2.Cells[5].Value = "正式员工";
row3.Cells[0].Value = "3月";
row3.Cells[1].Value = "马超";
row3.Cells[2].Value = "研发部";
row3.Cells[3].Value = "硕士";
row3.Cells[4].Value = "153****6543";
row3.Cells[5].Value = "是";
row4.Cells[0].Value = "4月";
row4.Cells[1].Value = "刘陵";
row4.Cells[2].Value = "研发部";
row4.Cells[3].Value = "本科";
row4.Cells[4].Value = "176****5464";
row4.Cells[5].Value = "是";
row5.Cells[0].Value = "4月";
row5.Cells[1].Value = "张丽";
row5.Cells[2].Value = "研发部";
row5.Cells[3].Value = "本科";
row5.Cells[4].Value = "158****4103";
row5.Cells[5].Value = "是";
//水平和垂直方向合并单元格
row1.Cells[0].ColumnSpan = 6;
row4.Cells[0].RowSpan = 2;
row3.Cells[2].RowSpan = 3;
row4.Cells[3].RowSpan = 2;
//设置单元格内文字对齐方式
PdfTable table = new PdfTable();
row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
row4.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
row4.Cells[3].StringFormat = new PdfStringFormat(PdfTextAlignment.Justify, PdfVerticalAlignment.Middle);
//设置单元格背景颜色
row1.Cells[0].Style.BackgroundBrush = PdfBrushes.LightGreen;
//设置表格边框颜色、粗细
PdfBorders borders = new PdfBorders();
borders.All = new PdfPen(Color.Black, 0.1f);
foreach (PdfGridRow pgr in grid.Rows)
{
foreach (PdfGridCell pgc in pgr.Cells)
{
pgc.Style.Borders = borders;
}
}
//在指定位置绘入表格
grid.Draw(page, new PointF(0, 40));
//保存到文档
doc.SaveToFile("PDF表格.pdf");
System.Diagnostics.Process.Start("PDF表格.pdf");
}
}
}
复制代码
(编辑:雷林鹏 来源:网络)
[.NET开发] C# 如何在PDF文档中创建表格的更多相关文章
- C# 如何在PDF文档中创建表格
表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组 ...
- 如何使用免费PDF控件从PDF文档中提取文本和图片
如何使用免费PDF控件从PDF文档中提取文本和图片 概要 现在手头的项目有一个需求是从PDF文档中提取文本和图片,我以前也使用过像iTextSharp, PDFBox 这些免费的PD ...
- Java 在PDF文档中绘制图形
本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法.包括绘制矩形.椭圆形.不规则多边形.线条.弧线.曲线.扇形等等.针对方法中提供的思路,也可以自行变换图形设计思路,如菱形.梯形或者组合图形等 ...
- 如何突出显示PDF文档中的一些重要文本信息
PDF文档中如果存在着太多的文字时,阅读者会容易遗漏很多重要的信息.但如果,文档中存在着一些特殊标记的文字时,比如标黄.标红文本时,很多人都会给予特别关注. 因此,当大家在使用pdfFactory专业 ...
- C# 在PDF文档中应用多种不同字体
在PDF文档中,可绘制不同字体样式.不同语言的文字,可通过使用Standard字体.TrueType字体.CJK字体或者自定义(私有)等字体类型.下面通过C#程序代码来展示如何实现使用以上类型的字体来 ...
- C# 在word文档中复制表格并粘帖到下一页中
C# 在word文档中复制表格并粘帖到下一页中 object oMissing = System.Reflection.Missing.Value; Microsoft.Offi ...
- 使用Java POI来选择提取Word文档中的表格信息
通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...
- 2018-10-04 [日常]用Python读取word文档中的表格并比较
最近想对某些word文档(docx)的表格内容作比较, 于是找了一下相关工具. 参考Automate the Boring Stuff with Python中的word部分, 试用了python-d ...
- [翻译] DTCoreText 从HTML文档中创建富文本
DTCoreText 从HTML文档中创建富文本 https://github.com/Cocoanetics/DTCoreText 注意哦亲,DTRichTextEditor 这个组件是收费的,不贵 ...
随机推荐
- UVA 475
/* 通过这题 学会了 两个词组 immediately to the left 是左邻的意思 immediately to the right 这个是右邻的意思 */ #include <io ...
- Python: ljust()|rjust()|center()字符串对齐
通过某种对齐方式来格式化字符串 ①对于基本的操作,可以使用字符串的ljust(),rjust(),center() ②函数format()同样可以用来很容易的对齐字符串,使用<,>,~
- 数据仓库基础(七)Informatica PowerCenter介绍
本文转载自:http://www.cnblogs.com/evencao/p/3140938.html Infromatica PowerCenter介绍: 1993年在美国加利福尼亚州成立,一年后 ...
- linux常用命令:diff 命令
diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...
- input/radio/select等标签的值获取和赋值
input/radio/select等标签的值获取和赋值,这几个是使用率最高的几个标签,获取值和赋值以及初始化自动填充数据和选择: 页面html: <div class=" " ...
- 阿里云运维部署工具AppDeploy详细教程
AppDeploy是一个通过SSH实现的命令行工具,可完成应用部署和远程运维管理.当前工具实现为两个版本:普通版(伪代码描述语言)和Python版.Python版使用Python语法规则,可实现您的各 ...
- thinkphp相关
thinkphp相关1.thinkphp调试sql方法:echo M("table_name")->getLastSql(); 2. 条件查询设置多个条件参数的写法:(1). ...
- C/C++之Memcpy and memmove
memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中. 但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝,但这也增加了一点点开 ...
- VMware前路难测,多个厂家群雄逐鹿
以VMware为例,虚拟机巨头公布了第二财季报告所示,它第二财季收入同比增长13%,达到了21.7亿美元,而且该公司收入和每股收益均超出预期. 在人们高谈Salesforce.亚马逊等新兴云计算厂商取 ...
- Redis 如何保持和MySQL数据一致【一】
1. MySQL持久化数据,Redis只读数据redis在启动之后,从数据库加载数据.读请求:不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取写请求:数据首先都写到数据库,之后 ...