C#中是否有任何CSV读/写库?

mrb*_*lah 103 c# csv

C#中是否有任何CSV读/写库?

Jos*_*ose 96

试试CsvHelper.它与FastCsvReader一样易于使用,也可以写入.我过去对FastCsvReader非常满意,但我也需要写一些东西,并且对FileHelpers不满意.

读:

var csv = new CsvReader( stream );
var myCustomTypeList = csv.GetRecords<MyCustomType>();
Run Code Online (Sandbox Code Playgroud)

写作:

var csv = new CsvWriter( stream );
csv.WriteRecords( myCustomTypeList );
Run Code Online (Sandbox Code Playgroud)

完全披露:我是这个图书馆的作者.

  • 谢谢,乔希.我放弃了这一点,它既快速又节省内存.我认为首次使用的文档可能会有所改进,但这绝对足够了. (3认同)

Ree*_*sey 19

在框架本身中有几个选项.

其中一个最简单的方法是引用Microsoft.VisualBasic,然后使用TextFieldParser.它是核心框架中功能齐全的CSV阅读器.

另一个不错的选择是使用数据集来读取CSV文件.

  • @ Roboto,任何在他们的项目中引用Microsoft.VisualBasic的C#开发人员都是一个无知的语言势利小人.更糟糕的是,他们根本不了解.NET. (19认同)
  • 我总是想知道为什么它出现在Microsoft.VisualBasic程序集中...... MS是否认为C#开发人员没有使用CSV? (6认同)
  • @Thomas:特别是因为许多C#开发人员都想到在他们的项目中包含VisualBasic程序集 (4认同)
  • 另一个VB程序集gem是CopyDirectory:http://stackoverflow.com/questions/58744/best-way-to-copy-the-entire-contents-of-a-directory-in-c (3认同)
  • 是的 - 那里有很多不错的"好东西".我认为这更多是因为VB有一些语言结构,最初在框架中没有真正考虑过,但是如果没有实现它们,他们就永远无法使用VB6用户.Devices和ApplicationServices命名空间具有各种有用的功能. (2认同)

小智 16

Sebastien Lorion CSV在CodeProject上有一位很棒的读者,名为A Fast CSV Reader.可能是C#最好的之一,它是免费的.

就写作而言,只需使用StreamWriter.

以下是一些用于将DataGridView文件写入文件的样板代码:

private void exportDGVToCSV(string filename)
{
    if (dataGridView1.Columns.Count != 0) 
    {    
        using (Stream stream = File.OpenWrite(filename))
        {
            stream.SetLength(0);
            using (StreamWriter writer = new StreamWriter(stream))
            {
                // loop through each row of our DataGridView
                foreach (DataGridViewRow row in dataGridView1.Rows) 
                {
                    string line = string.Join(",", row.Cells.Select(x => $"{x}"));
                    writer.WriteLine(line);
                }

                writer.Flush();
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 编写CSV比这复杂一点.如果要在CSV文件中表示的数据包含逗号或新行,则需要用引号括住数据.如果新引号标记的数据中有引号,则需要使用双引号转义引号.你当然可以自己编写这个逻辑代码,但是对你来说这样做会很好. (24认同)
  • @Reed:如果你想要正确地转义逗号和引号,这不是太微不足道.我甚至不确定是否存在标准化,但这种做法很常见. (10认同)
  • 标准化是RFC 4180. http://tools.ietf.org/html/rfc4180 (4认同)
  • 这是我最喜欢的.很棒的小图书馆. (2认同)
  • 编写CSV很简单 - 只需使用普通的文本输出方法,然后用逗号分隔.你真的只需要一个库/自定义处理程序来阅读... (2认同)

Mur*_*rph 8

是的 - 虽然我认为你实际上是在询问具体细节吗?

试试FileHelpers