对应的详细信息:如下图
如图,根据当前的gv标题对应的id,然后生成excel表格
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
protected void btnToExcel_Click(object sender, EventArgs e)
{
DGToExcel();
}
public void DGToExcel()
{
GridView gvNew = new GridView();
gvNew.DataSource = GetData();
gvNew.DataBind();
System.Web.UI.Control ctl = gvNew;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
//ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
private DataTable GetData()
{
DataTable dt = CreateStructure();
for (int i = 0; i < gvMsg.Rows.Count; i++)
{
CheckBox cb = (gvMsg.Rows[i].FindControl("chkSelect")) as CheckBox;
if (cb.Checked)
{
int MsgId = 0;
try
{
MsgId = int.Parse((gvMsg.Rows[i].FindControl("lblId") as Label).Text);
}
catch (Exception)
{
continue;
}
Message msg = MessageManage.GetMessageById(MsgId);
DataRow dr = dt.NewRow();
dr["编号"] = msg.Id;
dr["标题"] = msg.Title;
dr["内容"] = msg.Content;
dr["消息从何处发送"] = this.GetMsgAddress(msg.MsgType).ToString();
dr["意向产品"] = GetProduct(MsgId);
dr["代理人/发信人"] = msg.AgentManName;
dr["代理区域"] = msg.AgentArea;
dr["代理产品类型"] = GetType(msg.AgentType);
dr["电话"] = msg.Phone;
dr["地址"] = msg.Address;
dr["发送时间"] = msg.SendTime;
dt.Rows.Add(dr);
}
}
return dt;
}
private DataTable CreateStructure()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("编号", typeof(int)));
dt.Columns.Add(new DataColumn("标题", typeof(string)));
dt.Columns.Add(new DataColumn("内容", typeof(string)));
dt.Columns.Add(new DataColumn("消息从何处发送", typeof(string)));
dt.Columns.Add(new DataColumn("意向产品", typeof(string)));
dt.Columns.Add(new DataColumn("代理人/发信人", typeof(string)));
dt.Columns.Add(new DataColumn("代理区域", typeof(string)));
dt.Columns.Add(new DataColumn("代理产品类型", typeof(string)));
dt.Columns.Add(new DataColumn("电话", typeof(string)));
dt.Columns.Add(new DataColumn("地址", typeof(string)));
dt.Columns.Add(new DataColumn("发送时间", typeof(DateTime)));
return dt;
}
{
DGToExcel();
}
public void DGToExcel()
{
GridView gvNew = new GridView();
gvNew.DataSource = GetData();
gvNew.DataBind();
System.Web.UI.Control ctl = gvNew;
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";
//ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}
private DataTable GetData()
{
DataTable dt = CreateStructure();
for (int i = 0; i < gvMsg.Rows.Count; i++)
{
CheckBox cb = (gvMsg.Rows[i].FindControl("chkSelect")) as CheckBox;
if (cb.Checked)
{
int MsgId = 0;
try
{
MsgId = int.Parse((gvMsg.Rows[i].FindControl("lblId") as Label).Text);
}
catch (Exception)
{
continue;
}
Message msg = MessageManage.GetMessageById(MsgId);
DataRow dr = dt.NewRow();
dr["编号"] = msg.Id;
dr["标题"] = msg.Title;
dr["内容"] = msg.Content;
dr["消息从何处发送"] = this.GetMsgAddress(msg.MsgType).ToString();
dr["意向产品"] = GetProduct(MsgId);
dr["代理人/发信人"] = msg.AgentManName;
dr["代理区域"] = msg.AgentArea;
dr["代理产品类型"] = GetType(msg.AgentType);
dr["电话"] = msg.Phone;
dr["地址"] = msg.Address;
dr["发送时间"] = msg.SendTime;
dt.Rows.Add(dr);
}
}
return dt;
}
private DataTable CreateStructure()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("编号", typeof(int)));
dt.Columns.Add(new DataColumn("标题", typeof(string)));
dt.Columns.Add(new DataColumn("内容", typeof(string)));
dt.Columns.Add(new DataColumn("消息从何处发送", typeof(string)));
dt.Columns.Add(new DataColumn("意向产品", typeof(string)));
dt.Columns.Add(new DataColumn("代理人/发信人", typeof(string)));
dt.Columns.Add(new DataColumn("代理区域", typeof(string)));
dt.Columns.Add(new DataColumn("代理产品类型", typeof(string)));
dt.Columns.Add(new DataColumn("电话", typeof(string)));
dt.Columns.Add(new DataColumn("地址", typeof(string)));
dt.Columns.Add(new DataColumn("发送时间", typeof(DateTime)));
return dt;
}
但是我也遇到了一个问题,就是excel生成的超级链接,是以文本的形式显示出来,哪位大侠遇到这样的问题,请指点迷津.