有两个办法:
第1个办法:在导出excel的事件中,在最前面,把Gridview中不需要输出的列给隐藏掉(比如隐藏第1列:AbilityLicenceGrd.Columns[0].Visible = false;),

第2个办法:直接从数据库获取数据而不是从gridview。你可以把数据库取到DataTable中(取的时候过滤到不需要的列),然后把这个DataTable中的数据以http流的方式输出到Excel

//将StringWriter 以流的形式导出excel,excel文件名为exportFileName
protected void ExcelExport(StringWriter sw, string exportFileName)
{
Response.ContentEncoding = System.Text.Encoding.GetEncoding( "GB2312 ");
//避免文件名为乱码
string fileName = HttpUtility.UrlEncode(exportFileName, Encoding.UTF8);
string str = "attachment; filename= " + fileName + ".xls ";

Response.AppendHeader( "Content-Disposition ", str);
Response.ContentType = "application/ms-excel ";
Response.Write(sw);
Response.End();
}

//将datatable中的数据进行组装,比如添加列头(这样excel文件中第一行就看到列头名称)
public static StringWriter GetStringWriter(DataTable dt)
{
StringWriter sw = new StringWriter();

//先写列的表头,这样保证如果没有数据也能输出列表头
sw.Write( "学号 " + "\t ");
sw.Write( "姓名 " + "\t ");
sw.Write(sw.NewLine);

//如果包含数据
if (dt != null)
{
//写数据
foreach (DataRow dr in dt.Rows)
{
sw.Write(dr[ "StudentId "].ToString() + "\t ");
sw.Write(dr[ "StudentName "].ToString() + "\t ");
//换行
sw.Write(sw.NewLine);
}
}
sw.Close();
return sw;
}

//在页面的导出按钮事件代码
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = 根据条件从数据库得到所要的数据(其中过滤掉不需要的列);
ExcelExport(GetStringWriter(dt), “导出的Excel文件名”);
}