Introduction
This article describes how to export a
GridView data to excel, word, pdf, text, csv format and print in ASP.Net.
Description
Since there is no support for pdf conversion,
we require a third-party DLL to be referenced by our application that will use
for convert the grid to pdf.
- itextsharp.dll
You can download it from the source code
attached to this article.
![Image1.jpg]()
Design
Now add GridvView, six Button for export.
Design your screen as in the following screen.
Or you can copy the following source code:
<body>
<form
id="form1"
runat="server">
<div>
<table>
<tr>
<td
colspan="3"
align="center">
<asp:GridView
ID="gvDetails"
runat="server"
AutoGenerateColumns="false">
<Columns>
<asp:BoundField
DataField="EmpId"
HeaderText="Employee ID"
/>
<asp:BoundField
DataField="EmpName"
HeaderText="Employee
Name" />
<asp:BoundField
DataField="Education"
HeaderText="Education"
/>
<asp:BoundField
DataField="Place"
HeaderText="Place"
/>
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td>
<asp:Button
ID="btnExel"
runat="server"
Text="Export to Exel"
OnClick="btnExel_Click" />
</td>
<td>
<asp:Button
ID="btnWord"
runat="server"
Text="Export to Word"
OnClick="btnWord_Click" />
</td>
<td>
<asp:Button
ID="btnPdf"
runat="server"
Text="Export to Pdf"
OnClick="btnPdf_Click"
/>
</td>
</tr>
<tr>
<td>
<asp:Button
ID="btnCsv"
runat="server"
Text="Export to Csv"
OnClick="btnCsv_Click"
/>
</td>
<td>
<asp:Button
ID="btnText"
runat="server"
Text="Export to Text"
OnClick="btnText_Click" />
</td>
<td>
<asp:Button
ID="btnPrint"
runat="server"
Text="Print"
OnClientClick="PrintGridData();"
/>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Now go to the code view.
Here I use a static datatable data to bind it
to grid. but you can use database data to bind.
Import the reference of
using System.Data;
following is the code to bind data to grid method and call this method in :
protected
void Page_Load(object
sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridDetails();
}
}
protected void
BindGridDetails()
{
DataTable dt =
new DataTable();
dt.Columns.Add("EmpId",
typeof(Int32));
dt.Columns.Add("EmpName",
typeof(string));
dt.Columns.Add("Education",
typeof(string));
dt.Columns.Add("Place",
typeof(string));
DataRow dtrow = dt.NewRow();
dtrow["EmpId"] = 1;
dtrow["EmpName"] =
"Sanjeeb";
dtrow["Education"] =
"MCA";
dtrow["Place"] =
"Hyderabad";
dt.Rows.Add(dtrow);
dtrow = dt.NewRow();
dtrow["EmpId"] = 2;
dtrow["EmpName"] =
"Laku";
dtrow["Education"] =
"MBA";
dtrow["Place"] =
"Hyderabad";
dt.Rows.Add(dtrow);
dtrow = dt.NewRow();
dtrow["EmpId"] = 3;
dtrow["EmpName"] =
"Pankaj";
dtrow["Education"] =
"B.Tech";
dtrow["Place"] =
"Bihar";
dt.Rows.Add(dtrow);
dtrow = dt.NewRow();
dtrow["EmpId"] = 4;
dtrow["EmpName"] =
"Srikanth";
dtrow["Education"] =
"B.Tech";
dtrow["Place"] =
"Hyderabad";
dt.Rows.Add(dtrow);
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
Now run the application you will see the gridview with data.
![Image2.jpg]()
GridView with data is ready for export.
Import the reference of
using System.IO;
Now write this code under button click event
of Exel.
//This code
is for export grid to exel
protected void
btnExel_Click(object sender,
EventArgs e)
{
BindGridDetails();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition",
string.Format("attachment;
filename={0}", "Details.xls"));
Response.ContentType =
"application/ms-excel";
StringWriter sw =
new StringWriter();
HtmlTextWriter ht =
new HtmlTextWriter(sw);
gvDetails.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}
write this code under button click event of Word:
//This
code is for export grid to word
protected void
btnWord_Click(object sender,
EventArgs e)
{
BindGridDetails();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition",
string.Format("attachment;
filename={0}", "Details.doc"));
Response.ContentType = "application/ms-word";
StringWriter sw =
new StringWriter();
HtmlTextWriter ht =
new HtmlTextWriter(sw);
gvDetails.RenderControl(ht);
Response.Write(sw.ToString());
Response.End();
}
Import the reference of
using System.Text;
write this code under button click event of Text:
//This
code is for export grid to text
protected void
btnText_Click(object sender,
EventArgs e)
{
BindGridDetails();
Response.ClearContent();
Response.AddHeader("content-disposition",
string.Format("attachment;
filename={0}", "Details.txt"));
Response.ContentType = "application/text";
StringBuilder str =
new StringBuilder();
for (int
i = 0; i < gvDetails.Columns.Count; i++)
{
str.Append(gvDetails.Columns[i].HeaderText +
',');
}
str.Append("\n");
for (int
j = 0; j < gvDetails.Rows.Count; j++)
{
for (int
k = 0; k < gvDetails.Columns.Count; k++)
{
str.Append(gvDetails.Rows[j].Cells[k].Text +
',');
}
str.Append("\n");
}
Response.Write(str.ToString());
Response.End();
}
write this code under button click event of
Csv:
//This
code is for export grid to text
protected void
btnText_Click(object sender,
EventArgs e)
{
BindGridDetails();
Response.ClearContent();
Response.AddHeader("content-disposition",
string.Format("attachment;
filename={0}", "Details.txt"));
Response.ContentType = "application/text";
StringBuilder str =
new StringBuilder();
for (int
i = 0; i < gvDetails.Columns.Count; i++)
{
str.Append(gvDetails.Columns[i].HeaderText +
',');
}
str.Append("\n");
for (int
j = 0; j < gvDetails.Rows.Count; j++)
{
for (int
k = 0; k < gvDetails.Columns.Count; k++)
{
str.Append(gvDetails.Rows[j].Cells[k].Text +
',');
}
str.Append("\n");
}
Response.Write(str.ToString());
Response.End();
}
Before write the code for pdf 1st add the reference of itextsharp.dll.
Import these namspaces.
using
iTextSharp;
using
iTextSharp.text;
using
iTextSharp.text.html.simpleparser;
using
iTextSharp.text.pdf;
write this code under button click event of Pdf:
//This
code is for export grid to pdf
protected void
btnPdf_Click(object sender,
EventArgs e)
{
BindGridDetails();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition",
"attachment;filename=Details.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw =
new StringWriter();
HtmlTextWriter hw =
new HtmlTextWriter(sw);
gvDetails.RenderControl(hw);
StringReader sr =
new StringReader(sw.ToString());
Document pdfDoc =
new Document(PageSize.A4,
10f, 10f, 10f, 0f);
HTMLWorker htmlparser =
new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc,
Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
}
For print button write this javascript code in head section of aspx page.
<script
type="text/javascript">
function PrintGridData() {
var prtGrid =
document.getElementById('<%=gvDetails.ClientID
%>');
var prtwin = window.open('',
'PrintGridView',
'left=100,top=100,width=400,height=400,tollbar=0,scrollbars=1,status=0,resizable=1');
prtwin.document.write(prtGrid.outerHTML);
prtwin.document.close();
prtwin.focus();
prtwin.print();
prtwin.close();
}
</script>
Call this function in print button OnClientClick.
<asp:Button
ID="btnPrint"
runat="server"
Text="Print"
OnClientClick="PrintGridData();"
/>
Now if you run the application you will got an error like this
To avoid this error write this code :
//Verifies
the control is rendered
public override
void VerifyRenderingInServerForm(Control
control)
{
}
Now run the application and check the app by clicking on export Buttons.
![Image4.jpg]()