GridView导出Excel
首先要重载VerifyRenderingInServerForm方法,否则会报“GridView要在有run=server的From体内”的错。
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
protected void btnExport_Click(object sender, EventArgs e)
{
string vOutputName = lblTitle2.Text.Trim();//Excel名称
gvNoPriseMember.AllowPaging = false;
gvNoPriseMember.AllowSorting = false;
gvNoPriseMember.DataSource = dataView;
gvNoPriseMember.DataBind();
if (dataView.Table.Rows.Count > 0)
{
gvNoPriseMember.Attributes.Add("style", "vnd.ms-excel.numberformat:@");//格式化Excel(设置格式为文本)
foreach (GridViewRow row in gvNoPriseMember.Rows)
{
row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:yyyy-MM-dd HH:mm:ss");
}
ExportExcel.ExportExcelNew(vOutputName, gvNoPriseMember, Page);
}
else
{
PublicClass.Alert(GetGlobalResourceObject("PublicGlobal", "_NoData").ToString(), this);
return;
}
}
在导出的时候,如果某个字段为长数字(如身份证号码511922198507151512)、以0开头的编号(如0809111212)之类的数 据。如果不加处理在导出的Excel文件中将会被分别当作5.11922E+17和809111212来处理,这样与我们要达到 的实际效果不一致。所以我们要加以处理,即给单元格数据规定格式。常见的格式如下:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 数字:vnd.ms-excel.numberformat:#,##0.00
4) 货币:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%