2011-12-27 6 views
0

私がすでに持っているもの:コントローラコードがいくつかの値を計算して、それらをビューに送信しています。今、私はすべての結果をビューページに表示しています。使用してテキストをビューに表示され、それらの結果をエクスポートするか、ボタンを押すだけで、ファイルをエクセル「エクスポート」テキストへのエクスポートまたはMVCコントローラからの出力

私は何をしようとしています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);     

    } 

これはそれに印刷された値を使用してテキストファイルを生成します。しかし、どのようにして各値を別々の行に出力するのですか。今はすべての値が1つのフラット・ラインで出力されます。

答えて

1

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

上記のサンプルでどのように動作するのかよく分かりませんが、私の例でこれを行う方法を教えてください。また、環境では「コンテキストではありません」というエラーが発生します。システムネームスペースを使用しています。 – ZVenue

+0

ここでは何をしようとしているのか100%確信していません。 ちょうど1列の値であるCSVファイルを作成しようとしていますか? つまり、あなたの例では、var1とvar2の2つの異なるレコード、または1つのレコードの2つの列がありますか? – Arbiter

+0

CSVファイルではありません...私は "Report.txt"を持っています。私はちょうどコントローラコードから出力された値でテキストファイルを作成しています...今、私の方法のために上記のOPコードでは、1つのフラット・ラインで印刷します。私はvar1を最初の行に、var2を新しい行に印刷するようにします。 – ZVenue

関連する問題