如何使用C#窗体将数据表导出为PDF [英] How to export datatable to PDF using C# windows forms

查看:107
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆