Asp.net mvc 从MVC控制器导出到文本或excel

Asp.net mvc 从MVC控制器导出到文本或excel,asp.net-mvc,asp.net-mvc-2,export-to-excel,Asp.net Mvc,Asp.net Mvc 2,Export To Excel,我已经拥有的:我有控制器代码搅动一些值/计算并将它们发送到视图。现在,我正在查看页面上显示所有结果 我想做的是:按下“导出”按钮,将视图中显示的结果导出到文本或excel文件中 使用:MVC 我有一个示例代码 控制器: public ActionResult Calculations() { dynamic CalcModel = new ExpandoObject(); int var1 = //Value calc

我已经拥有的:我有控制器代码搅动一些值/计算并将它们发送到视图。现在,我正在查看页面上显示所有结果

我想做的是:按下“导出”按钮,将视图中显示的结果导出到文本或excel文件中

使用:MVC

我有一个示例代码

控制器:

    public ActionResult Calculations()
    {       
            dynamic CalcModel = new ExpandoObject();
            int var1 = //Value calculated here
            int var2 = //Calculation

            CalcModel.Var1= var1;
            CalcModel.Var2= var2;

            return View(CalcModel);

    }
视图:

这将生成一个带有打印值的文本文件。但是如何将每个值打印在单独的行中。。现在,所有值都打印在一条平面线上

这可能会有帮助

或者这个:


environment.NewLine应该这样做:

var builder = new StringBuilder();
//this is probably a loop...
builder.AppendFormat("1,2{0}", Envrionment.NewLine);
builder.AppendFormat("3,4{0}", Envrionment.NewLine);

File(new System.Text.UTF8Encoding().GetBytes(builder.ToString()), "text/csv", 
        "Report.txt"); 
编辑: 您也可以尝试\n

string csvText = string.Format("First Value,{0}\nSecond Value,{1}",var1, var2);
File(new System.Text.UTF8Encoding().GetBytes(csvText), "text/csv", 
        "Report.txt"); 

我不确定这对我上面的样本是如何起作用的。。你能不能花点时间告诉我如何做我的例子。此外,环境还收到“不在上下文中”错误。。我正在使用系统名称空间..我不是100%确定你在这里要做什么。您是否正在尝试创建一个仅包含一列值的CSV文件?换句话说,在您的示例中,var1和var2是两个不同的记录,还是单个记录的两列?不是CSV文件。。。在代码中我有“Report.txt”。我只是创建了一个文本文件,其中的值是从控制器代码中打印出来的。。。现在,由于我在OP中使用上面的代码,它只打印在一条平线中。我希望var1打印在第一行,var2打印在它下面的新行..您的编辑建议-不起作用。我仍然得到平线条目,而不是两条分开的线。好的。。。它适用于csv文件。不适用于文本文件。那很好。谢谢你的帮助。
var builder = new StringBuilder();
//this is probably a loop...
builder.AppendFormat("1,2{0}", Envrionment.NewLine);
builder.AppendFormat("3,4{0}", Envrionment.NewLine);

File(new System.Text.UTF8Encoding().GetBytes(builder.ToString()), "text/csv", 
        "Report.txt"); 
string csvText = string.Format("First Value,{0}\nSecond Value,{1}",var1, var2);
File(new System.Text.UTF8Encoding().GetBytes(csvText), "text/csv", 
        "Report.txt");