实战应用导出gridview到excel word pdf保留格式
protected void btExcel_Click(object sender, EventArgs e)
{
PmSYSAccess mypmsys = new PmSYSAccess(dataHelper);
if (int.Parse(DropDownList1.SelectedValue.ToString()) > 0)
{
gvList.DataSource = mypmsys.getYGGZ(0, int.Parse(DropDownList1.SelectedValue.ToString()), tbDate.Text, tbEndDate.Text);
}
else if (int.Parse(ddlDept.SelectedValue.ToString()) > 0)
{
gvList.DataSource = mypmsys.getYGGZ(int.Parse(ddlDept.SelectedValue.ToString()), 0, tbDate.Text, tbEndDate.Text);
}
else
{
gvList.DataSource = mypmsys.getYGGZ(0, 0, tbDate.Text, tbEndDate.Text);
}
gvList.AllowPaging = false;
gvList.AllowSorting = false;
gvList.DataBind();
ExportToExcel(gvList, "工资结算");
gvList.AllowPaging = true;
gvList.AllowSorting = true;
gvList.DataBind();
}
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
//============================================================================
#region 导出数据到Excel/pdf
/// <summary>
/// 导出数据到Excel
/// </summary>
/// <param name="gvData">GridView控件</param>
/// <param name="header">需要添加的头部的标题</param>
public static void ExportToExcel(GridView gvData, string header)
{
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
curContext.Response.Charset = "UTF-8";
curContext.Response.ContentType = "application/ms-word";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + HttpUtility.UrlEncode(header, Encoding.UTF8).ToString() + ".xls");
gvData.Page.EnableViewState = false;
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
gvData.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
/// <summary>
/// 导出数据到word里
/// </summary>
/// <param name="dg">gridview</param>
/// <param name="name">文件名</param>
private static void ExportToWord(GridView gvData, string header)
{
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
curContext.Response.Charset = "UTF-8";
curContext.Response.ContentType = "application/ms-word";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + HttpUtility.UrlEncode(header, Encoding.UTF8).ToString() + ".doc");
gvData.Page.EnableViewState = false;
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
gvData.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
/// <summary>
/// 导出数据到PDF
/// </summary>
/// <param name="Data">DataTable</param>
/// <param name="fileName">文件名</param>
/// <param name="headertxt">头部文字</param>
/// <param name="footertxt">尾部文字</param>
public static void ExportToPdf(DataTable Data, string fileName, string headertxt, string footertxt)
{
// step 1 need to write to memory first due to IE wanting to know the length of the pdf beforehand
MemoryStream m = new MemoryStream();
Document document = new Document();
try
{
// step 2: we set the ContentType and create an instance of the Writer
HttpContext.Current.Response.ContentType = "application/pdf";
PdfWriter.GetInstance(document, m);
// 添加页脚
HeaderFooter footer = new HeaderFooter(new Phrase(footertxt), false);
footer.Border = Rectangle.NO_BORDER;
document.Footer = footer;
// 添加页眉
HeaderFooter header = new HeaderFooter(new Phrase(headertxt), false);
document.Header = header;
// step 3
document.Open();
//定义字体
BaseFont baseFont = BaseFont.CreateFont("C://WINDOWS//Fonts//simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 9);
//添加内容
PdfPTable table = new PdfPTable(Data.Columns.Count);
for (int n = 0; n < Data.Columns.Count; n++)
{
table.AddCell(new Phrase(Data.Columns[n].ColumnName, font));
}
for (int i = 0; i < Data.Rows.Count; i++)
{
for (int j = 0; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), font));
}
}
document.Add(table);
document.Close();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;FileName=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString() + "-" + DateTime.Now.ToShortDateString() + ".pdf");
HttpContext.Current.Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
HttpContext.Current.Response.OutputStream.Flush();
HttpContext.Current.Response.OutputStream.Close();
}
catch (DocumentException ex)
{
HttpContext.Current.Response.Write(ex.Message);
}
}
#endregion