Writing data into CSV file in C#

后端 未结 15 1318
清酒与你
清酒与你 2020-11-22 17:15

I am trying to write into a csv file row by row using C# language. Here is my function

string first = reader[0].ToString();
string second=image.         


        
15条回答
  •  长发绾君心
    2020-11-22 17:32

    Handling Commas

    For handling commas inside of values when using string.Format(...), the following has worked for me:

    var newLine = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                  first,
                                  second,
                                  third                                    
                                  );
    csv.AppendLine(newLine);
    

    So to combine it with Johan's answer, it'd look like this:

    //before your loop
    var csv = new StringBuilder();
    
    //in your loop
      var first = reader[0].ToString();
      var second = image.ToString();
      //Suggestion made by KyleMit
      var newLine = string.Format("\"{0}\",\"{1}\"", first, second);
      csv.AppendLine(newLine);  
    
    //after your loop
    File.WriteAllText(filePath, csv.ToString());
    

    Returning CSV File

    If you simply wanted to return the file instead of writing it to a location, this is an example of how I accomplished it:

    From a Stored Procedure

    public FileContentResults DownloadCSV()
    {
      // I have a stored procedure that queries the information I need
      SqlConnection thisConnection = new SqlConnection("Data Source=sv12sql;User ID=UI_Readonly;Password=SuperSecure;Initial Catalog=DB_Name;Integrated Security=false");
      SqlCommand queryCommand = new SqlCommand("spc_GetInfoINeed", thisConnection);
      queryCommand.CommandType = CommandType.StoredProcedure;
    
      StringBuilder sbRtn = new StringBuilder();
    
      // If you want headers for your file
      var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                 "Name",
                                 "Address",
                                 "Phone Number"
                                );
      sbRtn.AppendLine(header);
    
      // Open Database Connection
      thisConnection.Open();
      using (SqlDataReader rdr = queryCommand.ExecuteReader())
      {
        while (rdr.Read())
        {
          // rdr["COLUMN NAME"].ToString();
          var queryResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                            rdr["Name"].ToString(),
                                            rdr["Address"}.ToString(),
                                            rdr["Phone Number"].ToString()
                                           );
          sbRtn.AppendLine(queryResults);
        }
      }
      thisConnection.Close();
    
      return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
    }
    

    From a List

    /* To help illustrate */
    public static List list = new List();
    
    /* To help illustrate */
    public class Person
    {
      public string name;
      public string address;
      public string phoneNumber;
    }
    
    /* The important part */
    public FileContentResults DownloadCSV()
    {
      StringBuilder sbRtn = new StringBuilder();
    
      // If you want headers for your file
      var header = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                 "Name",
                                 "Address",
                                 "Phone Number"
                                );
      sbRtn.AppendLine(header);
    
      foreach (var item in list)
      {
          var listResults = string.Format("\"{0}\",\"{1}\",\"{2}\"",
                                            item.name,
                                            item.address,
                                            item.phoneNumber
                                           );
          sbRtn.AppendLine(listResults);
        }
      }
    
      return File(new System.Text.UTF8Encoding().GetBytes(sbRtn.ToString()), "text/csv", "FileName.csv");
    }
    

    Hopefully this is helpful.

提交回复
热议问题