I am using a data table for storing data.
I am exporting the data from data table to CSV file.
Sometimes there may be values containing comma(,
)
Simply put your data inside the backslash like this: "\"" + yourdata + "\"". Take a look on the example below:
StringWriter csv = new StringWriter();
// Generate header of the CSV file
csv.WriteLine(string.Format("{0},{1}", "Header 1", "Header 2"));
// Generate content of the CSV file
foreach (var item in YourListData)
{
csv.WriteLine(string.Format("{0},{1}", item.Data1, "\"" + item.Data2 + "\""));
}
return File(new System.Text.UTF8Encoding().GetBytes(csv.ToString()), "application/csv", string.Format("{0}{1}", "YourFileName", ".csv"));
In the example: Your data2 may contains comma ","
Fields with embedded commas
must be delimited with double-quote characters.
fields:
abc, xyz
pqr
csv version:
"abc, xyz" , pqr
Fields that contain double quote
characters must be surounded by double-quotes, and the embedded double-quotes must each be represented by a pair of consecutive double quotes.
field:
Welcome to "My World"
csv version:
"Welcome to ""My World"""
Write Comma separated value between double quote without space to create csv with single column for comaa separated values.
Ex. I have two columns Code & Description With Values Code01 & Val1,Val2,Val3. To create csv with given data write below line in notepad and save it with csv extension.
Code,Description
Code01,"Val1,Val2,Val3"
Put Value in double quotes.
string ValueToEscape = "a,b";
"\"" + ValueToEscape + "\""
CSV Output = a,b
If you have a comma in the data you need to put in a csv the http://tools.ietf.org/html/rfc4180 says to use quotations as:
"123,56","A dog, cat and a frog"
StringBuilder sb = new StringBuilder();
foreach (DataColumn col in dt.Columns)
{
if (col.ColumnName.Contains(","))
{
sb.Append(String.Format("\"{0}\",", col.ColumnName));
}
else
{
sb.Append(String.Format("{0},", col.ColumnName));
}
}