我已经拥有:我有控制器代码生成一些值/计算并将它们发送到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);
}
这将生成一个文本文件,其中包含打印的值。但是如何将每个值打印在一个单独的行中..现在所有值都打印在一个扁平线上。
答案 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");