Экспорт в текст или Excel из контроллера MVC - PullRequest
0 голосов
/ 27 декабря 2011

Что у меня уже есть: у меня есть код контроллера, который собирает некоторые значения / расчеты и отправляет их в представление. Сейчас я показываю все результаты на странице просмотра.

Что я пытаюсь сделать: экспортировать результаты, отображаемые в представлении, в текстовый файл или файл 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 и позволить пользователю сохранить файл. Спасибо за помощь.

EDIT:

Я нашел решение (вроде), но мне нужна дополнительная помощь:

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 ]

1 голос
/ 27 декабря 2011

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