<p>假设在 .aspx 文件中,已有一个名为 GridView_Warehousing 的GridView控件,现在要加入将它导出为Excel文件的功能。</p>
一、首先设置aspx页面EnableEventValidation="false",如下:
C# 代码:
<%@ Page Title="入库 - 嘉里大通诺基亚仓库管理系统" Language="C#" MasterPageFile="~/MasterPage/Operator.master" AutoEventWireup="true" CodeFile="Warehousing.aspx.cs" Inherits="Operator_Warehousing" EnableEventValidation="false" %>
二、在页面中加入一个按钮,如下:
C# 代码:
<asp:Button id="btnExport" runat="server" Text="以Excel文件格式导出" onclick="btnExport_Click" />
三、后台关键代码:
C# 代码:
/// <summary> /// 以 Excel 文件格式导出 按钮按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnExport_Click(object sender, EventArgs e) { Export("application/ms-excel", "入仓储确认单.xls"); }/// <summary> /// 以 Excel 文件格式导出 /// </summary> /// <param name="fileType"></param> /// <param name="fileName"></param> private void Export(string fileType, string fileName) { // 以下三行可选,如果没有的话导出的只是当前页数据,没有其他页数据 //this.GridView_Warehousing.AllowPaging = false; //this.GridView_Warehousing.AllowSorting = false; // 绑定 GridView // 导出时隐藏操作列 this.GridView_Warehousing.Columns[0].Visible = false; // 隐藏分页行 this.GridView_Warehousing.BottomPagerRow.Visible = false; Response.Clear(); Response.Buffer = true; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8).ToString()); // 设置输出文件类型为excel文件 Response.ContentType = "application/ms-excel"; System.IO.StringWriter stringWriter = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter); this.GridView_Warehousing.RenderControl(htmlTextWriter); Response.Output.Write(stringWriter.ToString()); Response.Flush(); Response.End(); } /// <summary> /// 这个方法是配合导出 Excel 功能的,内容不用写 /// </summary> /// <param name="control"></param> public override void VerifyRenderingInServerForm(Control control) { }
四、如果发现点击按钮出现 JavaScript 错误,则可能是由于页面中加入了 UpdatePanel 所致,如果是这个原因,就需要给 UpdatePanel 添加 Triggers 节点,如下:
C# 代码:
<Triggers> <asp:PostBackTrigger ControlID="btnExport" /> </Triggers>