protected void barExport_ButtonClicked(object sender, Infragistics.WebUI.UltraWebToolbar.ButtonEvent be)
{
if (be.Button.Key == "One")
{
DataSet ds = (DataSet)ViewState["DataSet"];
System.Data.DataTable t = new System.Data.DataTable();
t.TableName = "线路信息查询";
t.Columns.Add("投运单位");
t.Columns.Add("线路名称");
t.Columns.Add("线路长度(KM)");
t.Columns.Add("投运日期");
t.Columns.Add("电压等级(kV)");
t.Columns.Add("总杆塔数");
if (ds == null || ds.Tables[0].Rows.Count < 1)
{
return;
}
else
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow r = t.NewRow();
DataRow r2 = ds.Tables[0].Rows[i];
r["投运单位"] = r2["BUILDUNIT"];
r["线路名称"] = r2["NAME"];
r["线路长度(KM)"] = r2["LENGTH"];
r["投运日期"] = DateTime.Parse(r2["LAUNCHDATE"].ToString()).ToString("yyyy-MM-dd");
r["电压等级(kV)"] = r2["VOLTAGELEVEL.code_name"];
r["总杆塔数"] = r2["POLECOUNT"];
t.Rows.Add(r);
}
GetExcel(t);
}
}
}
public void GetExcel( System.Data.DataTable dtData )
{
System.Web.UI.WebControls.GridView dgExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if ( dtData != null )
{
// 设置编码和附件格式
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("gb2312");
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + dtData.TableName + DateTime.Today.ToShortDateString() + ".xls"); //定义输出文件和文件名
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
curContext.Response.Charset = "";
// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter( strWriter );
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
dgExport.RenderControl( htmlWriter );
curContext.Response.Write( strWriter.ToString() );
curContext.Response.End();
}
}