Writing a CSV file in .net

前端 未结 11 1360
生来不讨喜
生来不讨喜 2020-11-27 18:59

I have a requirement to export a dataset as a CSV file.

I have spent a while searching for a set of rules to go by and realised there are quite a few rules and exce

相关标签:
11条回答
  • 2020-11-27 19:33

    I've used filehelpers extensively and it's pretty awesome for generating CSVs.

    0 讨论(0)
  • 2020-11-27 19:34

    If there are any commas in your cell, surround the entire cell with double quotes, eg:

    cell 1,cell 2,"This is one cell, even with a comma",cell4,etc
    

    And if you want a literal double quote, do two of them, eg:

    cell 1,cell 2,"This is my cell and it has ""quotes"" in it",cell 4,etc
    

    As for dates, stick to ISO format, and you should be fine (eg yyyy-mm-dd hh:mm:ss)

    0 讨论(0)
  • 2020-11-27 19:34

    Here is the function you can use to generate a row of CSV file from string list (IEnumerable(Of String) or string array can be used as well):

    Function CreateCSVRow(strArray As List(Of String)) As String
        Dim csvCols As New List(Of String)
        Dim csvValue As String
        Dim needQuotes As Boolean
        For i As Integer = 0 To strArray.Count() - 1
            csvValue = strArray(i)
            needQuotes = (csvValue.IndexOf(",", StringComparison.InvariantCulture) >= 0 _
                          OrElse csvValue.IndexOf("""", StringComparison.InvariantCulture) >= 0 _
                          OrElse csvValue.IndexOf(vbCrLf, StringComparison.InvariantCulture) >= 0)
            csvValue = csvValue.Replace("""", """""")
            csvCols.Add(If(needQuotes, """" & csvValue & """", csvValue))
        Next
        Return String.Join(",", csvCols.ToArray())
    End Function
    

    As I think, it won't be difficult to convert from VB.NET to C#)

    0 讨论(0)
  • 2020-11-27 19:35

    Can you use a string array and then concatenate using:

    string out = "";
    string[] elements = { "1", "2" };
    foreach(string s in elements) { out += s + "," };
    out = out.substring(0, out.Length-1);
    
    0 讨论(0)
  • 2020-11-27 19:37

    I would just like to add there's an RFC that specifies the CSV format which is what I would regard as the canonical source.

    0 讨论(0)
提交回复
热议问题