2017-01-31 8 views
0

トリプルヘッダー行と.csvに:エクスポート私は以下、このCSVファイルのようなデータを持ってASP.Net

CustomerID, Name, Email 
1,   Name A, [email protected] 
2,   Name B, [email protected] 
3,   Name C, [email protected] 

ファイルを.csvにエクスポートするためのコードは良好に動作しています。上記のように配信されたデータ。しかし、私はこのような.csvファイルの形式を変更する必要があります。私はすでに+ =ちょうど次の行を繰り返し、別の変数のバイト[]を追加してStringBulderをしよう

public List<CustomerInfo> GetCustomers() 
    { 
     List<CustomerInfo> customerList = new List<CustomerInfo>(); 
     customerList.Add(new CustomerInfo { CustomerID = 1, Name = "Name A", Email = "[email protected]" }); 
     customerList.Add(new CustomerInfo { CustomerID = 2, Name = "Name B", Email = "[email protected]" }); 
     customerList.Add(new CustomerInfo { CustomerID = 3, Name = "Name C", Email = "[email protected]" }); 
     return customerList; 
    } 


protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb += sb.Append(string.Format("{0},{1},{2}", "CustomerID", "Name", "Email") + Environment.NewLine); 
     List<CustomerInfo> customerList = GetCustomers(); 
     foreach (CustomerInfo objCustomer in customerList) 
     { 
      sb.Append(string.Format("{0},{1},{2}", objCustomer.CustomerID.ToString(), objCustomer.Name, objCustomer.Email) + Environment.NewLine); 
     } 

     byte[] bytes = Encoding.ASCII.GetBytes(sb.ToString()); 
     if (bytes != null) 
     { 
      Response.Clear(); 
      Response.ContentType = "text/csv"; 
      Response.AddHeader("Content-Length", bytes.Length.ToString()); 
      Response.AddHeader("Content-disposition", "attachment; filename=\"sample.csv" + "\""); 
      Response.BinaryWrite(bytes); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 

CustomerID 
Name 
Email 
1 
Name A 
[email protected] 
CustomerID 
Name 
Email 
2 
Name B 
[email protected] 
CustomerID 
Name 
Email 
3 
Name C 
[email protected] 

以下は私のコードです。しかし、それはまだ動作しません。それは私に、刺すようなビルダーが+ =でできないエラーを示しています。たぶん私はそれを作るのが間違っています。しかし、私はどのようにcsvファイルにトリプルローヘッダーを作るのか分かりません。私はgoogleでそんなに検索していますが、私はまだフォーマットの.csvが見つかりません。

+0

カンマの代わりに、 'Environment.NewLine'を使用してください。 –

+0

あなたの提案には本当にありがとうございます。それは仕事の男です:D –

+0

誰かがもっと努力したように見えます - 正しいかどうか試してみてください。 –

答えて

0

は...あなたは?:

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    string headers = "CustomerID" + Environment.NewLine 
     + "Name" + Environment.NewLine 
     + "Email"; 
    StringBuilder sb = new StringBuilder(); 
    List<CustomerInfo> customerList = GetCustomers(); 
    foreach (CustomerInfo objCustomer in customerList) 
    { 
     sb.AppendLine(headers); 
     sb.AppendLine(objCustomer.CustomerID); 
     sb.AppendLine(objCustomer.Name); 
     sb.AppendLine(objCustomer.Email); 
    } 

    byte[] bytes = Encoding.ASCII.GetBytes(sb.ToString()); 
    if (bytes != null) 
    { 
     Response.Clear(); 
     Response.ContentType = "text/csv"; 
     Response.AddHeader("Content-Length", bytes.Length.ToString()); 
     Response.AddHeader("Content-disposition", "attachment; filename=\"sample.csv" + "\""); 
     Response.BinaryWrite(bytes); 
     Response.Flush(); 
     Response.End(); 
    } 
} 

けれどもが、正直に言うと、これは非常に、より適切なContent-Typetext/plainかもしれないが、もはやCSV、その通常のテキストである必要ないものに基づいて

+0

私はcsvについて知識がありません。これは、会社が望むのはその形式のようなものです。ちょっとうかがってもいいですか?あなたが言ったようにこれはもはやCSVではありません。私はトリプルヘッダー行が必要なのでそれですか? –

+0

それは、1)フィールドを区切るカンマがなく、2)各フィールドが別々の行にあるからです。 CSVはカンマで区切られた値*、カンマなし= CSVなしの略です。しかしそれについてあまり心配しないでください。それが彼らが望むものなら、それらにそれらを与える... – user1429080

+0

ohhはい。なぜ彼らはそれが欲しいのか分かりません。 :Dあなたの説明のために、どうもありがとうございました。あなたは正しいです。 –

0

このですNick.McDermaid user1429080コメント。私はこれに変わります。そして、仕事です。

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
     string headers = "CustomerID" + Environment.NewLine 
          + "Name" + Environment.NewLine 
          + "Email" + Environment.NewLine; 
     StringBuilder sb = new StringBuilder(); 
     //sb = sb.Append(string.Format("{0},{1},{2}", "CustomerID", "Name", "Email") + Environment.NewLine); 

     List<CustomerInfo> customerList = GetCustomers(); 
     foreach (CustomerInfo objCustomer in customerList) 
     { 
      //sb.Append(string.Format("{0},{1},{2}", objCustomer.CustomerID.ToString(), objCustomer.Name, objCustomer.Email) + Environment.NewLine); 

      sb.Append(headers); 
      sb.Append(objCustomer.CustomerID.ToString()); 
      sb.Append(Environment.NewLine); 
      sb.Append(objCustomer.Name); 
      sb.Append(Environment.NewLine); 
      sb.Append(objCustomer.Email); 
      sb.Append(Environment.NewLine); 
     } 

     byte[] bytes = Encoding.ASCII.GetBytes(sb.ToString()); 
     if (bytes != null) 
     { 
      Response.Clear(); 
      Response.ContentType = "text/csv"; 
      Response.AddHeader("Content-Length", bytes.Length.ToString()); 
      Response.AddHeader("Content-disposition", "attachment; filename=\"sample.csv" + "\""); 
      Response.BinaryWrite(bytes); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 

ありがとうございます。ご意見ありがとうございます。私にそんなに助けてください:D

関連する問題