匯出DataGridView為PDF文件
using System;
using System.Data;
using System.Configuration;
using System.Windows.Forms;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
using System.Data.SqlClient;
[itextsharp.dll]
public partial class GrdvTOpdf
{
#region ConvertGrdiViewToPDF() -> 換GridView為PDF文件
///
/// 轉換GridView為PDF文件 ///
/// GridView
/// 目標PDF檔名字
/// 字型所在路徑
/// 字型大小
/// 返回呼叫是否成功
public void ConvertGrdiViewToPDF(DataGridView datagridview)
{
///設定匯出字型
///
string FontPath ="C://WINDOWS//Fonts//simsun.ttc,1";
int FontSize = 12;
///
Boolean cc=false;
string strFileName;
SaveFileDialog savFile = new SaveFileDialog();
savFile.Filter = "PDF檔案|.pdf";
savFile.ShowDialog();
if (savFile.FileName != "")
{
strFileName = savFile.FileName;
}
else
{
MessageBox.Show("終止匯出", "終止匯出", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//初始化一個目標文件類
//Document document = new Document();
//豎排模式,大小為A4,四周邊距均為25
Document document = new Document(PageSize.A4, 25, 25, 25, 25);
//橫排模式,大小為A4,四周邊距均為50
//Document doc = new Document(PageSize.A4.rotate(),50,50,50,50);
//呼叫PDF的寫入方法流
//注意FileMode-Create表示如果目標檔案不存在,則建立,如果已存在,則覆蓋。
PdfWriter writer = PdfWriter.getInstance(document, new FileStream(strFileName, FileMode.Create));
//建立PDF文件中的字型
BaseFont baseFont = BaseFont.createFont(
FontPath,
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
//根據字型路徑和字型大小屬性建立字型
Font font = new Font(baseFont, FontSize);
// 新增頁尾
//HeaderFooter footer = new HeaderFooter(new Phrase(footertxt), true);
HeaderFooter footer = new HeaderFooter(new Phrase("-- ", font), new Phrase(" --", font));
footer.Border = Rectangle.NO_BORDER; // 不顯示兩條橫線
footer.Alignment = Rectangle.UNDEFINED; // 讓頁碼居中
document.Footer = footer;
//開啟目標文件物件
document.Open();
//根據資料表內容建立一個PDF格式的表
PdfPTable table = new PdfPTable(datagridview.Columns.Count);
//iTextSharp.text.Table table = new iTextSharp.text.Table(datagridview.Columns.Count);
// GridView的所有資料全輸出
//datagridview.AllowPaging = false;
// ---------------------------------------------------------------------------
// 新增表頭
// ---------------------------------------------------------------------------
// 設定表頭背景色
//table.DefaultCell.BackgroundColor = Color.GRAY; // OK
//table.DefaultCell.BackgroundColor = (iTextSharp.text.Color)System.Drawing.Color.FromName("#3399FF"); // NG
//table.DefaultCell.BackgroundColor = iTextSharp.text.Color;
//table.DefaultCell.BackgroundColor = System.Drawing.Color.DodgerBlue;
// 新增表頭,每一頁都有表頭
for (int j = 0; j < datagridview.Columns.Count; j++)
{
table.addCell(new Phrase(datagridview[j, 0].Value.ToString(), font));
}
// 告訴程式這行是表頭,這樣頁數大於1時程式會自動為你加上表頭。
table.HeaderRows = 1;
//
// ---------------------------------------------------------------------------
// 新增資料
// ---------------------------------------------------------------------------
// 設定表體背景色
//table.DefaultCell.BackgroundColor = Color
//遍歷原gridview的資料行
for (int i = 0; i < datagridview.Rows.Count; i++)
{
for (int j = 0; j < datagridview.Columns.Count; j++)
{
try
{
table.addCell(new Phrase(datagridview[j,i].Value.ToString(), font));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
cc = true;
}
}
}
//在目標文件中新增轉化後的表資料
document.Add(table);
//關閉目標檔案
document.Close();
//關閉寫入流
writer.Close();
// Dialog
if (!cc)
{
MessageBox.Show("已生成PDF檔案。", "生成成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
#endregion
}