从MVC控制器导出到text或excel

时间:2011-12-27 15:44:57

标签: asp.net-mvc asp.net-mvc-2 export-to-excel

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

我要做的是:按下“导出”按钮,将视图上显示的结果导出到文本或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);

    }

查看:

<table>
   <tr><td>First Value:</td><td><%=Model.Var1%></td></tr>
   <tr><td>Second Value:</td><td><%=Model.Var2%></td></tr>
</table>

我希望能够将这些值从控制器写入文本文件或excel文件,并让用户保存文件。谢谢你的帮助。

编辑:

我找到了一种解决方案(种类)但需要进一步的帮助:

Latest Controller code:

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

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

            //Export code.

            string csv = "Value1 = " + var1 + "|| Value2 = " + var2; 
            return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", 
            "Report.txt"); 

            //Export code end.

            return View(CalcModel);                  

    }

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

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");