• Asp.Net导出数据到Excel


     

    对应的详细信息:如下图

    如图,根据当前的gv标题对应的id,然后生成excel表格

    代码如下:

    代码
        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;
        }

    但是我也遇到了一个问题,就是excel生成的超级链接,是以文本的形式显示出来,哪位大侠遇到这样的问题,请指点迷津.

  • 相关阅读:
    (三)Java秒杀项目之实现秒杀功能
    多模块环境下修改包名Rename directory与Rename package
    pom.xml标签页名称
    mac终端命令
    @Select 数据表的字段与实体类的属性值
    Markedown换行
    链表问题-不开辟新空间
    Java机器学习框架(1)【待完成】
    奇妙的算法【3】- 贪心算法【待完成】
    奇妙的算法【2】- 韩信点兵问题优化
  • 原文地址:https://www.cnblogs.com/qixuejia/p/1659715.html
Copyright © 2020-2023  润新知