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 ...
随机推荐
- Request和Response。
复习点:1.重定向问题 2.输出字符串到浏览器.3.文件下载需求:1. 页面显示超链接2. 点击超链接后弹出下载提示框3. 完成图片文件下载 Request和Response Request: 1. ...
- Scrapy爬虫提高效率
如何提高scrapy的爬取效率 增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发 ...
- 在ubuntu系统中,遇到 “由于/bin 不在PATH 环境变量中,故无法找到该命令”问题
2018年01月07日 11:27:34 YangJianShuai 阅读数 3024更多 分类专栏: linux 好多命令的位置在/usr/bin.恢复办法如下:1. /usr/bin/sudo v ...
- vue.js生成纵向拓扑图
1.前端代码 <link href="https://magicbox.bk.tencent.com/static_api/v3/assets/bootstrap-3.3.4/css/ ...
- 从Seq2seq到Attention模型到Self Attention
Seq2seq Seq2seq全名是Sequence-to-sequence,也就是从序列到序列的过程,是近年当红的模型之一.Seq2seq被广泛应用在机器翻译.聊天机器人甚至是图像生成文字等情境. ...
- php72w-common conflicts with php-common-5.4.16-46.el7.x86_64
安装PHP的BC扩展时,报的错. 使用的命令为 yum install php-bcmath 输出错误: --> Processing Conflict: php72w-common--.w7. ...
- Appium连接夜神模拟器,模拟手势点击(tap)
# -*- coding:utf-8 -*- from appium import webdriver from time import sleep desired_caps ={ 'platform ...
- li的inline-block出现间隙原因,解决方案
<style type="text/css"> body{ margin:0 0; padding:0 0; font-size: 14; text-decoratio ...
- 前端性能----CDN
Content Distribute Network(内容分发网络)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能模块,使用户就近获取所需内容 ...
- Ofbiz项目学习——阶段性小结——视图
一.简要介绍 1.按照SQL的视图概念:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表.视图包含行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 2. ...