Ref:
HTML
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#9AD6ED" HeaderStyle-ForeColor="#636363"
runat="server" AutoGenerateColumns="false" OnDataBound="OnDataBound">
<Columns>
<asp:BoundField DataField="CustomerName" HeaderText="Name" ItemStyle-Width="150" />
<asp:BoundField DataField="CustomerCountry" HeaderText="Country" ItemStyle-Width="150" />
<asp:BoundField DataField="EmployeeName" HeaderText="Name" ItemStyle-Width="150" />
<asp:BoundField DataField="EmployeeCountry" HeaderText="Country" ItemStyle-Width="150" />
</Columns>
</asp:GridView>
<asp:Button Text="Export To PDF" runat="server" OnClick="ExportToPDF" />
Namespaces
using System.Data;
using System.Drawing;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindGrid();
}
}
private void BindGrid()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4] { new DataColumn("CustomerName"), new DataColumn("CustomerCountry"), new DataColumn("EmployeeName"), new DataColumn("EmployeeCountry") });
dt.Rows.Add("John Hammond", "United States", "Albert Dunner", "Bolivia");
dt.Rows.Add("Mudassar Khan", "India", "Jason Sprint", "Canada");
dt.Rows.Add("Suzanne Mathews", "France", "Alfred Lobo", "Philippines");
dt.Rows.Add("Robert Schidner", "Russia", "Shaikh Ayyaz", "UAE");
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void OnDataBound(object sender, EventArgs e)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
TableHeaderCell cell = new TableHeaderCell();
cell.HorizontalAlign = HorizontalAlign.Center;
cell.Text = "Customers";
cell.ColumnSpan = 2;
row.Controls.Add(cell);
cell = new TableHeaderCell();
cell.ColumnSpan = 2;
cell.HorizontalAlign = HorizontalAlign.Center;
cell.Text = "Employees";
row.Controls.Add(cell);
row.BackColor = ColorTranslator.FromHtml("#3AC0F2");
GridView1.HeaderRow.Parent.Controls.AddAt(0, row);
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
protected void ExportToPDF(object sender, EventArgs e)
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
//To Export all pages
GridView1.AllowPaging = false;
this.BindGrid();
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
}
}
Screenshot
![](https://i.imgur.com/k7Q5kSB.png)