两个数据表导出两个不同的Excel CSV文件

时间:2012-07-05 16:25:54

标签: c# asp.net

最后我有2个数据表填充了不同的数据,现在我有一个按钮,允许我将一个数据表发送到.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,现在如果我想在同一个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();

它只保存第一个数据表并忽略其余的代码,任何人都可以解释原因或为什么会发生这种情况,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

原因是您的第一个代码段中的这一行:

context.Response.End();

HttpResponse.End() method“停止执行页面,并引发EndRequest事件。”

如果您想继续处理代码,则无法在结束前调用该方法。