如何使用C#窗体将数据表导出为PDF [英] How to export datatable to PDF using C# windows forms
本文介绍了如何使用C#窗体将数据表导出为PDF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用C#窗体表格将数据表(datagridview)写入或导出为PDF?我正在使用库itextsharp.dll
How to write or export datatable (datagridview) to PDF using C# windows forms? I'm using library itextsharp.dll
推荐答案
请参考以下主题:
有关创建PDF的教程使用C#(。NET 2.0)和iTextSharp的文件:
使用C#2.0创建PDF文件的教程 [ ^ ]
用于生成令人印象深刻的PDF报告的.NET库:
Gios PDF .NET库 [ ^ ]
导出数据表或IEnumerable到Word 2003-2007 / Excel 2003 - 2007 / PDF / XML / HTML:
导出DataTable / IEnume rable to Word / Excel / PDF / CSV / HTML / CSV [ ^ ]
如何使用C#窗体表格将数据表写入/导出为PDF [ ^ ]
DataTable To PDF [ ^ ]
使用c# 在asp.net中将gridview导出为pdf > [ ^ ]
Please refer following threads:
Tutorials on creating PDF files using C# (.NET 2.0) and iTextSharp:
Tutorials on creating PDF files using C# 2.0[^]
A .NET library for generating impressive PDF reports:
Gios PDF .NET library[^]
Export Data Table or an IEnumerable to Word 2003- 2007 / Excel 2003 - 2007 / PDF / XML / HTML:
Exports a DataTable/IEnumerable to Word / Excel / PDF / CSV / HTML / CSV[^]
How to write/export datatable to PDF using C# windows forms [^]
DataTable To PDF[^]
Export gridview to pdf in asp.net using c#[^]
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
namespace MDAIInternet
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
static DataTable datatable = new DataTable("testpdf"); //定义一个datatable
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
DataRow dr;
//建立Column例,可以指明例的类型,这里用的是默认的string
datatable.Columns.Add(new DataColumn("编号"));
datatable.Columns.Add(new DataColumn("用户名"));
for (int i = 1; i < 5; i++)
{
dr = datatable.NewRow();
dr[0] = System.Convert.ToString(i);
dr[1] = "tommy" + System.Convert.ToString(i);
datatable.Rows.Add(dr);
}
}
this.DataGrid1.DataSource=datatable;
this.DataGrid1.DataBind(); //先显示出来看看
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
try
{
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(Server.MapPath("Chap0101.pdf"), FileMode.Create)); //在当前路径下创一个文件
document.Open();
BaseFont bfChinese = BaseFont.CreateFont("D:\\WINDOWS\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //在windows目录下引用字体文件
iTextSharp.text.Font fontChinese = new iTextSharp.text.Font(bfChinese, 12, iTextSharp.text.Font.NORMAL,new iTextSharp.text.Color(0, 0, 0));
// document.Add(new Paragraph(this.TextBox1.Text.ToString(), fontChinese));
//可以自己添加文字进去
// iTextSharp.text.Image jpeg = iTextSharp.text.Image.GetInstance(Server.MapPath("pic015.jpg")); //添加个图片
// document.Add(jpeg);
PdfPTable table = new PdfPTable(datatable.Columns.Count);
for (int i = 0; i < datatable.Rows.Count; i++)
{
for (int j = 0; j < datatable.Columns.Count; j++)
{
table.AddCell(new Phrase(datatable.Rows[i][j].ToString(), fontChinese));
}
}
document.Add(table); //添加table
document.Close();
Response.Redirect("Chap0101.pdf"); //打开PDF文件
// Response.TransmitFile("Chap0101.pdf"); //保存
}
catch (DocumentException ex)
{
Response.Write(ex.ToString());
}
}
}
}
请检查以下代码:
Have a check at this following codes:
private void Data2PDF(DataTable dataTable)
{
Document document = new Document(PageSize.A4, 10, 10, 90, 10);
System.IO.MemoryStream mStream = new System.IO.MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, mStream);
int cols = dataTable.Columns.Count;
int rows = dataTable.Rows.Count;
pdfDoc.Open();
// pdfTable create and set
iTextSharp.text.Table pdfTable = new iTextSharp.text.Table(cols, rows);
pdfTable.BorderWidth = 1;
pdfTable.Width = 100;
pdfTable.Padding = 1;
pdfTable.Spacing = 1;
//table headers
for (int i = 0; i < cols; i++)
{
Cell cellCols = new Cell();
Font ColFont = FontFactory.GetFont(FontFactory.HELVETICA, 12, Font.BOLD);
Chunk chunkCols = new Chunk(dataTable.Columns[i].ColumnName, ColFont);
cellCols.Add(chunkCols);
pdfTable.AddCell(cellCols);
}
//table data
for (int k = 0; k < rows; k++)
{
for (int j = 0; j < cols; j++)
{
Cell cellRows = new Cell();
Font RowFont = FontFactory.GetFont(FontFactory.HELVETICA, 12);
Chunk chunkRows = new Chunk(dataTable.Rows[k][j].ToString(), RowFont);
cellRows.Add(chunkRows);
pdfTable.AddCell(cellRows);
}
}
pdfDoc.Add(pdfTable);
pdfDoc.Close();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=Datatable.pdf");
Response.Clear();
Response.BinaryWrite(mStream.ToArray());
Response.End();
}
另外,我在底部添加一个链接:将数据库导出到Excel,PDF,HTML,RTF,XML等ASP.NET没有自动化 [ ^ ]
这篇关于如何使用C#窗体将数据表导出为PDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文