Frage

Ich habe ein C#/ASPX

Ich möchte nur das StoreID, Datum, Empid, die erste Startzeit und die letzte Endzeit konvertieren)

Aber wenn ich auf die Schaltfläche klicke, wie kann ich alle während der Konvertierung die Spalte beschränken

Dies ist der Export -Schaltfläche:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnExportCSV_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";

        GridView1.AllowPaging = false;
        GridView1.DataBind();

        StringBuilder sb = new StringBuilder();
        for (int k = 0; k < GridView1.Columns.Count; k++)
        {
            //add separator
            sb.Append(GridView1.Columns[k].HeaderText + ',');
        }
        //append new line
        sb.Append("\r\n");
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            for (int k = 0; k < GridView1.Columns.Count; k++)
            {
                //add separator
                sb.Append(GridView1.Rows[i].Cells[k].Text + ',');
            }
            //append new line
            sb.Append("\r\n");
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
    }
}
War es hilfreich?

Lösung

Wenn Sie den Index der Spalten kennen, den Sie exportieren möchten, z. B. die folgenden:

StoreId | Datum | Empid | Employeename | Startzeit | Endzeit | Startzeit | Endzeit

Sie müssen Werte aus Spalten bei Index = 0, 1, 2, 4, 7 abrufen

Dann könnte Ihr Code so einfacher sein

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnExportCSV_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
        Response.Charset = "";
        Response.ContentType = "application/text";

        GridView1.AllowPaging = false;
        GridView1.DataBind();

        StringBuilder sb = new StringBuilder();
        //add separator for header
        sb.Append(GridView1.Columns[0].HeaderText).Append(",")
            .Append(GridView1.Columns[1].HeaderText).Append(",")
            .Append(GridView1.Columns[2].HeaderText).Append(",")
            .Append(GridView1.Columns[4].HeaderText).Append(",")
            .Append(GridView1.Columns[7].HeaderText).Append("\r\n");

        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            DateTime date = DateTime.Parse(GridView1.Rows[i].Cells[1].Text);

            if (date.DayOfWeek != DayOfWeek.Saturday 
                 && date.DayOfWeek != DayOfWeek.Sunday) 
            {
               //add separator for each row
               sb.Append(GridView1.Rows[i].Cells[0].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[1].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[2].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[4].Text).Append(",")
               .Append(GridView1.Rows[i].Cells[7].Text).Append("\r\n");
            }
        }
        Response.Output.Write(sb.ToString());
        Response.Flush();
        Response.End();
    }
}

Andere Tipps

Ich habe diesen Code nicht kompiliert, aber er sollte funktionieren.

protected void btnExportCSV_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
    Response.Charset = "";
    Response.ContentType = "application/text";

    GridView1.AllowPaging = false;
    GridView1.DataBind();

    StringBuilder sb = new StringBuilder();
    bool hitFirstStartTime = false;
    for (int k = 0; k < GridView1.Columns.Count; k++)
    {
        var letsDoThis = false;

        if (GridView1.Columns[k].HeaderText == "Storeid" ||
            GridView1.Columns[k].HeaderText == "Date" ||
            GridView1.Columns[k].HeaderText == "EmpID")
        {
            letsDoThis = true;
        }
        else if (GridView1.Columns[k].HeaderText == "Starttime" && !hitFirstStartTime)
        {
            letsDoThis = true;
            hitFirstStartTime = true;
        }
        else if (GridView1.Columns[k].HeaderText == "Endtime" &&  k == GridView1.Columns.Count)
        {
            letsDoThis = true;
        }

        if (letsDoThis)
            sb.Append(GridView1.Columns[k].HeaderText + ',');
    }
    //append new line
    sb.Append("\r\n");
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        bool hitFirstStartTime = false;
        for (int k = 0; k < GridView1.Columns.Count; k++)
        {
            var letsDoThis = false;

            if (GridView1.Columns[k].HeaderText == "Storeid" ||
                GridView1.Columns[k].HeaderText == "Date" ||
                GridView1.Columns[k].HeaderText == "EmpID")
                letsDoThis = true;
            else if (GridView1.Columns[k].HeaderText == "Starttime" && 
                     !hitFirstStartTime)
                letsDoThis = true;
            else if (GridView1.Columns[k].HeaderText == "Endtime" && 
                     k == GridView1.Columns.Count)
                letsDoThis = true;
            {
                letsDoThis = true;
                hitFirstStartTime = true;
            }

            if (letsDoThis)
                sb.Append(GridView1.Columns[k].HeaderText + ',');
        }
        //append new line
        sb.Append("\r\n");
    }
    Response.Output.Write(sb.ToString());
    Response.Flush();
    Response.End();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top