通用方法:

 

/// <summary>
        
/// 导入Excel
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        protected void btnImport_Click(object sender, EventArgs e)
        
{

            Response.Clear();
            Response.AddHeader(
"content-disposition""attachment;filename=FileName.xls");
            Response.Charset 
= "GB2312";
            Response.ContentType 
= "application/电子表格.xls";
            System.IO.StringWriter stringWrite 
= new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite 
= new HtmlTextWriter(stringWrite);
            gvData.AllowPaging 
= false;
            Response.ContentEncoding 
= System.Text.Encoding.GetEncoding("GB2312");

            LoadData();      
//数据绑定方法

            gvData.RenderControl(htmlWrite);
            Response.Write(stringWrite.ToString());
            Response.End();
            gvData.AllowPaging 
= true;

        }

错误提示1:
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内

解决方法:
加入如下代码:

public override void VerifyRenderingInServerForm(Control control)
{

}

错误提示2:
如果设置为 GetEncoding("GB2312"),导出的文件将会出现乱码。

解决方法:
可用Response.ContentEncoding = System.Text.Encoding.UTF7;

错误提示3:
当用GridView导出Execl的时候,会发生只能在执行 Render() 的过程中调用 RegisterForEventValidation的错误提示

解决方法:

直接在页面前台加<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true">

小技巧:
如果需要调整导入到Excle时GV的格式
可以在绑定GV的时候写
例如:
gvData.Columns[gvData.Columns.Count - 1].Visible = false;    //导入时要隐藏某一列