0

最終的に、異なるデータで満たされた 2 つのデータテーブルができました。次のように、1 つのデータテーブルを .CSV Excel ファイルに送信できるボタンがあります。

string name="Dat_Agrup";
HttpContext context = HttpContext.Current;
context.Response.Clear();

foreach (System.Data.DataColumn column in _myDataTable.Columns)
{
    context.Response.Write("name"+ ",");
}

context.Response.Write(Environment.NewLine);

foreach (System.Data.DataRow row in _myDataTable.Rows)
{
    for (int i = 0; i < _myDataTable.Columns.Count; i++)
    {
        context.Response.Write(row[i].ToString().Replace(",", string.Empty) + ",");
    }

    context.Response.Write(Environment.NewLine);
}

context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".csv");
context.Response.End();

これで、このコードは完全に機能します。データテーブルを宣言する場所のようないくつかの行が欠落している可能性がありますが、機能することを信じてください:D、同じコードを使用して2番目のデータテーブルを保存したい場合、同じaction_buttonは機能しません。これを使用します次のコード:

string name2="Centroids";
HttpContext context2 = HttpContext.Current;
context2.Response.Clear();

foreach (System.Data.DataRow row in _myDataTable2.Rows)
{   
    for (int i = 0; i < _myDataTable2.Columns.Count; i++)
    {
        context2.Response.Write(row[i].ToString().Replace(",", string.Empty) + ",");
    }

    context2.Response.Write(Environment.NewLine);
}

context2.Response.ContentType = "text2/csv";
context2.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name2 + ".csv");
context2.Response.End();

最初のデータテーブルのみを保存し、残りのコードは無視します。誰でもその理由や理由を説明できます。どんな種類の助けも大歓迎です。

4

1 に答える 1

1

その理由は、最初のコード スニペットの次の行にあります。

context.Response.End();

このHttpResponse.End()メソッドは「ページの実行を停止し、EndRequest イベントを発生させます」。

コードの処理を続けたい場合は、そのメソッドを最後まで呼び出すことはできません。

于 2012-07-05T16:53:23.157 に答える