C# 将筛选结果导出到excel

C# 将筛选结果导出到excel,c#,asp.net,export-to-excel,C#,Asp.net,Export To Excel,我对从gridview导出一些筛选结果到excel有点问题。我使用了这个链接中的解决方案 这一切都很好,除了我导出的表有很多外键的ID列,我无法导出数字,我需要数据。我有一个变量,在这个变量中,我保存了与我正在导出的表相关的所有表的select连接,但我不知道如何在这个变量和保存会话筛选结果的变量之间建立连接。你能帮我吗?多谢各位 在加载页面中,我显示了所有记录 导出时,我仅选择与Scott相关的订单 受保护的无效页面加载(对象发送方、事件参数e) { 如果(!IsPostBack) { Dat

我对从gridview导出一些筛选结果到excel有点问题。我使用了这个链接中的解决方案 这一切都很好,除了我导出的表有很多外键的ID列,我无法导出数字,我需要数据。我有一个变量,在这个变量中,我保存了与我正在导出的表相关的所有表的select连接,但我不知道如何在这个变量和保存会话筛选结果的变量之间建立连接。你能帮我吗?多谢各位

  • 在加载页面中,我显示了所有记录

  • 导出时,我仅选择与Scott相关的订单

    受保护的无效页面加载(对象发送方、事件参数e) { 如果(!IsPostBack) { DataTable dt=BindGridView(); GridView1.DataSource=dt; GridView1.DataBind(); } }

    private DataTable BindGridView(string name = null)
    {
        string connectionString = "Data Source=.SQLEXPRESS;Initial Catalog=Employee;Integrated Security=True";
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd = new SqlCommand();
            if (name != null)
            {
                cmd.CommandText = "SELECT * FROM ORDERS WHERE Name='" + name + "'";
            }
            else
            {
                cmd.CommandText = "SELECT * FROM ORDERS";
            }
    
            cmd.Connection = con;
            con.Open();
    
            SqlDataReader dr = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(dr);
            return dt;
        }
    }
    
    protected void ExportToExcel(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=exportdata.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";
        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);
    
            GridView gv = new GridView();
            gv.DataSource = BindGridView("Scott"); // Seelct all the order where Name='Scott' - my filter query
            gv.DataBind();
    
            gv.RenderControl(hw);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }
    }
    
    public override void VerifyRenderingInServerForm(Control control)
    {
    
    }
    

  • 我有两个变量。一个用于保存筛选结果,另一个用于与具有外键的表进行联接,这些表与我要导出的表具有外键。而gv.DataSource只能得到这两个变量中的一个,对吗?确切地说,就是包含过滤结果集的变量。我把它放进去了,但问题是我有一些列是其他表的外键,在我要导出的表中,我只有这些列的ID。我需要的是信息,比如单词,而不是id-s。然后需要更改查询,该查询将获取id的数据,并将其绑定到exportToExc()中。我有一个变量,用于获取id的数据。如何使用它保持过滤结果的正确导出?