How to write a value which contain comma to a CSV file in c#?
Asked Answered
A

6

31

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(,) so the values are not exported correctly.

For Example

Consider the value is "9,11,32". I have to export as such.

But when I do the first column conatins 9 then in next column 11.

I want to display 9,11,32 in the same column in the CSV file. How do I do that?

Ause answered 11/11, 2011 at 7:10 Comment(3)
possible duplicate of Dealing with commas in a CSV fileEvert
What does "**not exported correctly." mean? Normally you put the data in quotes but it depends on what is reading the file, not on what is writing it. I always suggest you use tab delimited instead then you don't have to worry about commas.Maquette
Possible duplicate of Dealing with commas in a CSV fileVharat
L
32

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 ","

Longbow answered 27/3, 2015 at 7:35 Comment(2)
But if My data is like abc,def" then it does not works as you explain. it give one column with abc,def" and second column with value def"". I don't know how to handle it.Dermott
You have to replace one " with two "" in your data.Ethos
H
19
  1. Fields with embedded commas must be delimited with double-quote characters.

    fields:

    1. abc, xyz
    2. pqr

csv version:

"abc, xyz" , pqr
  1. 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"""
    
Hibben answered 31/12, 2012 at 12:26 Comment(0)
C
7

If you have a comma in the data you need to put in a csv the https://www.rfc-editor.org/rfc/rfc4180 says to use quotations as:

"123,56","A dog, cat and a frog"
Cove answered 11/11, 2011 at 7:23 Comment(0)
S
3

Put Value in double quotes.

string ValueToEscape = "a,b";

"\"" + ValueToEscape + "\""

CSV Output = a,b

Seawards answered 24/2, 2018 at 6:53 Comment(0)
F
3
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));
            }
        }
Foretopmast answered 28/4, 2018 at 6:36 Comment(0)
M
2

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"
Medardas answered 19/4, 2018 at 13:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.