GridView導出到Excel或Word文件
在項目中我們經常會遇到要求將一些數據導出成Excel或者Word表格的情況
前台代碼:
<form runat="server">
<div>
<asp:GridView ID="gvPersonList" runat="server" >
<Columns>
<asp:BoundField DataField="Id" HeaderText="編號" />
<asp:BoundField DataField="Name" HeaderText="姓名" />
<asp:TemplateField HeaderText="性別">
<ItemTemplate>
<%# eval_r("Sex").ToString()=="true"?"男":"女" %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Age" HeaderText="年齡" />
<asp:TemplateField HeaderText="婚否">
<ItemTemplate>
<%# Boolean.Parse(eval_r("Married").ToString())==true?"是":"否" %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnToExcel" runat="server" OnClick="btnToExcel_Click" Text="導出Excel" />
<asp:Button ID="btnToWord" runat="server" OnClick="btnToWord_Click" Text="導出Word" />
</div>
</form>
後台代碼
protected void btnToExcel_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page page = new Page();
HtmlForm form = new HtmlForm();
GridView1.EnableViewState = false;
page.EnableEventValidation = false;
page.DesignerInitialize();
page.Controls.Add(form);
form.Controls.Add(GridView1);
page.RenderControl(htw);
Response.Clear();
Response.Buffer = true;
//設置導出文件的格式
Response.ContentType = "application/vnd.ms-excel";
//假定導出的文件名為data.xls
Response.AddHeader("Content-Disposition", "attachment;filename=data.xls");
Response.Charset = "UTF-8";
Response.ContentEncoding = Encoding.Default;
Response.Write(sb.ToString());
Response.End();
}
protected void btnToWord_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page page = new Page();
HtmlForm form = new HtmlForm();
GridView1.EnableViewState = false;
page.EnableEventValidation = false;
page.DesignerInitialize();
page.Controls.Add(form);
form.Controls.Add(GridView1);
page.RenderControl(htw);
Response.Clear();
Response.Buffer = true;
//設置導出文件的格式
Response.ContentType = "application/ms-word";
//假定導出的文件名為data.xls
Response.AddHeader("Content-Disposition", "attachment;filename=data.doc");
Response.Charset = "UTF-8";
Response.ContentEncoding = Encoding.Default;
Response.Write(sb.ToString());
Response.End();
}
參考博客1:https://blog.csdn.net/zhoufoxcn/archive/2008/05/16/2450642.aspx
參考博客2:https://blog.csdn.net/rickyll/archive/2009/10/22/4714517.aspx
最後更新:2017-04-02 22:16:01