web-dev-qa-db-ja.com

gridviewデータをCSVファイルにエクスポート

ASP.Net 2.0にgridviewコントロールがあり、このgridviewデータをCSVファイルにエクスポートする必要があります。

このグリッドビューをデータセットにバインドしました。データセットをグリッドビューにバインドした後、グリッドビューデータにいくつかの変更を加えました。次に、グリッドビューで「未開始」として1を表示します。

したがって、エクスポートに直接データセットを使用することはできません。必要なものは..グリッドビューデータ(データセットのデータではない)をCSVファイルにエクスポートする(c#の)コードが必要です。

12
jitendra

次のコードを試してください、私はすでに何度もそれを使用しました。データをgridviewからコードで指定されたcsvファイルに直接エクスポートします。

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();
}

詳細については ここ をご覧ください。

28
Devjosh

AutoGenerateColumns = trueとAllowSorting = trueを持つグリッドビューで動作するように変更した良い答えを提供してくれたDevjoshに最初に感謝します。さらに、csvファイルが破損していないことを確認するために、データから返されたカンマをすべて取り除きました。

private void ExportReport()
{
    // set the resulting file attachment name to the name of the report...
    string fileName = "test";

    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".csv");
    Response.Charset = "";
    Response.ContentType = "application/text";

    System.Text.StringBuilder sb = new System.Text.StringBuilder();

    // Get the header row text form the sortable columns
    LinkButton headerLink = new LinkButton();
    string headerText = string.Empty;

    for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++)
    {
        //add separator
        headerLink = gvReport.HeaderRow.Cells[k].Controls[0] as LinkButton;
        headerText = headerLink.Text;
        sb.Append(headerText + ",");
    }
    //append new line
    sb.Append("\r\n");
    for (int i = 0; i < gvReport.Rows.Count; i++)
    {
        for (int k = 0; k < gvReport.HeaderRow.Cells.Count; k++)
        {
            //add separator and strip "," values from returned content...

            sb.Append(gvReport.Rows[i].Cells[k].Text.Replace(",", "") + ",");
        }
        //append new line
        sb.Append("\r\n");
    }
    Response.Output.Write(sb.ToString());
    Response.Flush();
    Response.End();
}
4
zach.xtr