C#利用iTextSharp将datatable数据转化为PDF文件
1、下载iTextSharp.dll文件
下载链接:https://pan.baidu.com/s/14o-pJ-U2yU8n0EyIn249qg
提取码:tklu
2、PDF转换方法
/// <summary>
/// datatable转PDF方法
/// </summary>
/// <param name="Data">dataTable数据</param>
/// <param name="PDFFile">PDF文件保存的路径</param>
/// <param name="FontSize">字体大小</param>
/// <returns></returns>
public bool ConvertDataTableToPDF(DataTable Data, string PDFFile, float FontSize)
{
//默认页面大小
Document document = new Document();
document.SetPageSize(PageSize.A2);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFile, FileMode.Create));
document.Open();
//设置字体
//BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
//Font font = new Font(bf, FontSize);
//设置字体,支持中文
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bfChinese, , iTextSharp.text.Font.NORMAL, new BaseColor(, , )); PdfPTable table = new PdfPTable(Data.Columns.Count);
table.WidthPercentage = ; // percentage
table.DefaultCell.Padding = ;
table.DefaultCell.BorderWidth = ;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
//将datatable表头转换成PDFTable的表头
foreach (DataColumn dc in Data.Columns)
{
table.AddCell(new Phrase(dc.ColumnName.ToString(), fontChinese));
}
//插入数据
for (int i = ; i < Data.Rows.Count; i++)
{
for (int j = ; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), fontChinese));
}
}
document.Add(table);
document.Close();
writer.Close();
return true;
}
3、调用代码
private void btnCreatePDF_Click(object sender, EventArgs e)
{
//获取datatable数据
DataTable tab = GetDataTableList();
//获取保存路径
string savePath = "D://PDF//";
string saveName = "PDF文件.pdf";
CreateFileDirectory(savePath);
//文件路径:保存路径+保存名称
string path = savePath + saveName;
//调用转化PDF的方法
ConvertDataTableToPDF(tab,path,);
}
4、调用界面

5、生成结果


6、全部demo代码
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace DataTableToPDF
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btnCreatePDF_Click(object sender, EventArgs e)
{
//获取datatable数据
DataTable tab = GetDataTableList();
//获取保存路径
string savePath = "D://PDF//";
string saveName = "PDF文件.pdf";
CreateFileDirectory(savePath);
//文件路径:保存路径+保存名称
string path = savePath + saveName;
//调用转化PDF的方法
ConvertDataTableToPDF(tab,path,);
} /// <summary>
/// datatable转PDF方法
/// </summary>
/// <param name="Data">dataTable数据</param>
/// <param name="PDFFile">PDF文件保存的路径</param>
/// <param name="FontSize">字体大小</param>
/// <returns></returns>
public bool ConvertDataTableToPDF(DataTable Data, string PDFFile, float FontSize)
{
//默认页面大小
Document document = new Document();
document.SetPageSize(PageSize.A2);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFile, FileMode.Create));
document.Open();
//设置字体
//BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
//Font font = new Font(bf, FontSize);
//设置字体,支持中文
BaseFont bfChinese = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bfChinese, , iTextSharp.text.Font.NORMAL, new BaseColor(, , )); PdfPTable table = new PdfPTable(Data.Columns.Count);
table.WidthPercentage = ; // percentage
table.DefaultCell.Padding = ;
table.DefaultCell.BorderWidth = ;
table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
//将datatable表头转换成PDFTable的表头
foreach (DataColumn dc in Data.Columns)
{
table.AddCell(new Phrase(dc.ColumnName.ToString(), fontChinese));
}
//插入数据
for (int i = ; i < Data.Rows.Count; i++)
{
for (int j = ; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), fontChinese));
}
}
document.Add(table);
document.Close();
writer.Close();
return true;
} /// <summary>
/// 创建文件夹
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public string CreateFileDirectory(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return path;
} /// <summary>
/// 创建默认dataTable数据
/// </summary>
/// <returns></returns>
public DataTable GetDataTableList() {
DataTable dt = new DataTable();
dt.Columns.Add("学生编号", typeof(string));//添加列
dt.Columns.Add("学生名称", typeof(string));//添加列
dt.Columns.Add("家庭住址", typeof(string));//添加列
//循环添加行的数据
for (var i=; i < ; i++) {
DataRow dtRow = dt.NewRow();
dtRow["学生编号"] = "S10"+(i+);
dtRow["学生名称"] = "学生" + (i + );
dtRow["家庭住址"] = "地址" + (i + );
dt.Rows.Add(dtRow);
}
return dt;
}
}
}
7、demo源码下载
下载地址:https://pan.baidu.com/s/1tTG4lzzDvC8vOvEjng8N5Q
提取码:c8mc
PS
参考网址:https://blog.csdn.net/qq_40253245/article/details/87694147
C#利用iTextSharp将datatable数据转化为PDF文件的更多相关文章
- 将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)
最近ubuntu下caj阅读器,突然崩掉了,而偏偏要准备开题,在网上搜索原因未果,准备放弃时候,突然在网上看到一个脚本,说是很好用,可以在指定页面将caj文件转化为pdf文件,亲测有用,这里直接给出脚 ...
- 利用aspose-words 实现 java中word转pdf文件
利用aspose-words 实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; ...
- 利用FlashPaper在web页面中显示PDF文件(兼容各浏览器)
应项目需求要把PDF内嵌到网页中显示,其中有了很多办法,比如用<embed/>元素放入PDF文件,但是效果不理想,浏览器兼容不理想,在ie9/8(其他版本没有测试)显示会提示下载pdf文件 ...
- php 查询mysql数据批量转为PDF文件二(批量使用wkhtmltopdf html导出PDF)
上节讲到配置wkhtmltopdf,这节讲下如何批量操作 首先讲下wkhtmltopdf如何使用 直接命令行输入: wkhtmltopdf http://www.baidu.com/ baidu.p ...
- php 查询mysql数据批量转为PDF文件一(mac使用配置wkhtmltopdf html导出PDF)
数据转标准PDF查文档,查资料先转HTML标准格式再html转PDF 转PDF wkhtmltopdf工具是最佳选择 首先下载wkhtmltopdf https://wkhtmltopdf.org/d ...
- Ubuntu10.04中利用V4L2读取摄像头数据并保存成文件【转】
转自:http://blog.chinaunix.net/uid-29339876-id-4042245.html 利用V4L2读取UVC摄像头数据并保存成视频文件,主要参考http://linuxt ...
- C# 将DataTable数据写入到txt文件中
见代码: /// <summary> /// 将DataTable里面的内容写入txt文件 /// </summary> /// <param name="dt ...
- 利用rsync+inotify实现数据实时同步脚本文件
将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133. ...
- 关于将word转化为pdf 文件调用jacob 包
用jacob. 先到官方网站上去下载:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=11836 ...
随机推荐
- Docker10-实战-构建Java Web运行环境
目录 创建Docker镜像 下载制作镜像的系统 启动容器并修改镜像 制作镜像 创建Docker镜像 [info]构建Docker镜像的一般过程是首先创建一个容器, 并在容器里修改镜像,配置相关环境等, ...
- List加载因子和扩容因子
List.Map.set的加载因子,默认初始容量和扩容增量 首先,这三个概念说下.初始大小,就是创建时可容纳的默认元素个数:加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值 ...
- 自己开发SSO单点登录
概述 单点登录指的是有一个中央的单点登录服务器,各个子系统和这个中央的单点登录服务器打交道,比如有A,B两个子系统. A登录后,B系统就不用再登录,直接可以访问,当其中有一个子系统选择注销时,那么所有 ...
- spark遇到的问题及解决方法
1. 表中数据过亿,加载速度过慢,而我只需要加载增量数据 如:加载昨天一整天的数据,添加predicates分区,方法如下: //predicates相当于是把昨天的数据分成一个区,其它的数据不加载 ...
- pandas用法总结
pandas用法总结 2018年06月07日 10:49:03 一夜了 阅读数 38705更多 分类专栏: 杂项 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导 ...
- 某个新闻网站抓去自媒体账号 queryId js破解
第一步: 发现加密 第二部:搜索加密参数 queryId 第三部:找到js核心加密代码 第四部:代码实现 window = {} function utf8ToBase64(t) { console. ...
- error: ‘Poco::UInt16’ has not been declared
碰到Poco库和其他第三方库共用的时候,当include-POCO库的头文件的时候,此时也include-其他库,导致这个报错. 原因是在这两个库中都对 UINT16 定义,导致冲突. 可以把这两个库 ...
- 32、MySQL简介
一.MySQL简介 1.数据库管理软件分类 主要分为关系型和非关系型. 可以简单的理解为,关系型数据库需要有表结构,非关系型数据库是key-value存储的,没有表结构. 关系型:如sqllite,d ...
- secureCRT无操作自动登出时间修改(亲测可用)
转自:http://blog.sina.com.cn/s/blog_6bcf42010102vlt9.html secureCRT连接机器经常会因为一段时间无操作就退出了,提示timed out wa ...
- 一台服务器配置多个TOMCAT
如果要在一台服务器上配置多个Tomcat,主要就是要避免Tomcat服务器的端口冲突的问题.只需要修改CATALINA_HOME\conf\server.xml中的启动端口和连接端口就OK了! 下面我 ...