先在前端放置一个隐藏的GridView,给其绑定数据。
<div style="display: none">
<asp:GridView ID="Gv_Detail" runat="server" Width="1260px" AutoGenerateColumns="False"
BackColor="White" BorderStyle="None" BorderWidth="1px" HeaderStyle-Height="60px"
HeaderStyle-Font-Size="10.0pt" ShowFooter="true" OnRowDataBound="Gv_Detail_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="收款单位" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lb_EmployeeName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReceiveUnit").ToString()%>'></asp:Label>
</ItemTemplate>
<ItemStyle Height="30px" Width="200px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="项目名称" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="lb_ProjectCaption" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project").ToString()%>'> </asp:Label>
</ItemTemplate>
</Columns>
<HeaderStyle Font-Bold="True" />
</asp:GridView>
</div>
protected void BindData_Gv_Detail()
{
DataTable dt = new DataTable();
string str = ViewState["strWhere"].ToString();
dt = b_performanceBond.GetList_InformationQuery(dropListBondType.SelectedValue, str, 0, 0).Tables[0];
Gv_Detail.DataSource = dt;
Gv_Detail.DataBind();
}
//导出Excel
protected void btnExport_Click(object sender, EventArgs e)
{
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.xls", Server.UrlEncode("" + DateTime.Now.ToString("yyyyMMdd") + "保证金信息统计")));
curContext.Response.ContentType = "application/vnd.ms-excel"; //设置输出文件类型为xls文件
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
curContext.Response.Charset = "";
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
this.Gv_Detail.RenderControl(htmlWriter);
//设置换行 <br/>是html的换行样式替换成<br style='mso-data-placement:same-cell;'/> EXCEL换行
curContext.Response.Write(strWriter.ToString().Replace("<br/>", "<br style='mso-data-placement:same-cell;'/> "));
curContext.Response.End();
}
//一定要进行重载,否则报错
public override void VerifyRenderingInServerForm(Control control)
{
}