Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中是否有CSV读写器库?_C#_Csv - Fatal编程技术网

C#中是否有CSV读写器库?

C#中是否有CSV读写器库?,c#,csv,C#,Csv,C#中是否有读者/作者库?是的-尽管我想你实际上是在询问细节 试试看,有几十个 是最常见的一种 我应该说,我发现FileHelper在某些情况下具有限制性,而是使用。根据我的经验,如果您在运行时之前不知道CSV文件的格式或导入映射,那么这是一个更好的库 Sebastien Lorion在CodeProject上有一个很棒的CSV阅读器,名为。可能是C#最好的,而且是免费的 至于写作,只需使用StreamWriter 下面是一些将DataGridView写入文件的样板代码: private voi

C#中是否有读者/作者库?

是的-尽管我想你实际上是在询问细节

试试看,有几十个

是最常见的一种


我应该说,我发现FileHelper在某些情况下具有限制性,而是使用。根据我的经验,如果您在运行时之前不知道CSV文件的格式或导入映射,那么这是一个更好的库

Sebastien Lorion在CodeProject上有一个很棒的
CSV
阅读器,名为。可能是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();
            }
        };
    }
}

框架本身就有几个选项

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

另一个好的选择是尝试。它和FastCsvReader一样易于使用,也可以进行书写。过去我对FastCsvReader很满意,但我也需要一些能写东西的东西,对FileHelper不满意

阅读:

var csv = new CsvReader( stream );
var myCustomTypeList = csv.GetRecords<MyCustomType>();
var csv = new CsvWriter( stream );
csv.WriteRecords( myCustomTypeList );


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

这是我最喜欢的。很棒的小程序库。编写CSV很简单-只需使用普通的文本输出方法,并用逗号分隔。你真的只需要一个库/自定义处理程序来读取…@Reed:如果你想让逗号和引号正确转义,这并不简单。我甚至不确定这是否有一个标准化,但这是非常常见的。编写CSV比这要复杂一些。如果要在CSV文件中表示的数据包含逗号或新行,则需要用引号将数据括起来。如果新加引号的数据中有引号,则需要使用双引号转义引号。您当然可以自己编写该逻辑,但如果有一个库可以为您编写,那就太好了。标准化是RFC4180。我一直想知道为什么它在Microsoft.VisualBasic程序集中。。。微软认为C#开发者没有使用CSV吗?@Thomas:特别是因为很多C#开发者一想到在他们的项目中包含一个可视化的基本组件就畏缩了。是的,这里面有很多不错的“好东西”。我认为这更多是因为VB有一些最初在框架中没有真正考虑的语言结构,但是如果不实现它们,它们将永远无法让VB6用户理解它们。设备和应用程序服务名称空间有各种有用的东西。@Roboto,任何在项目中畏缩于引用Microsoft.VisualBasic的C#开发人员,都是一个无知的语言势利小人。更糟糕的是,他们根本不懂.NET。另一个VB程序集的宝石是CopyDirectory:我们也使用FileHelper。我发现FileHelper配置起来很麻烦。FastCsvReader更易于使用。+1表示FastCsvReader。出色的表现。但它主要是一个阅读器/解析器。不是作家。我写了,但出于某种奇怪的原因,文件助手随机出现故障。此外,FileHelpers库已经很长时间没有开发了。FileHelpers现在正在积极开发,请参见。我不同意。这无疑是一个建设性的问题,也是google上针对
.net csv库
的第一个结果。证据,虽然是轶事,但我的说法是,这个问题在过去六年里被浏览了22000多次。没错,谷歌的第一次成功有一个很好的速度比较:谢谢,乔希。我尝试了一下,它既快又节省内存。我认为对于初次使用的用户来说,文档可以做一些改进,但这已经足够了。有没有一种方法可以在没有自定义类型的情况下使用这个库,这样我就可以遍历我的表格网格(自定义)并写出标题,然后传递每个行字段?我只是在寻找一种方法来防止文件中的错误(正确转义等)。是的。您可以使用
WriteField
。检查此处的文档@Zimano Not true。您可以读取单个字段,甚至只获取行的字符串数组。查看文档@乔希:哦,很高兴听到你这么说,谢谢!我只是在这里查阅了入门指南:它没有包括我的用例。我应该看得更远,我的道歉。然而,在该页面上,它确实指出使用某种映射是使用
CsvHelper
的推荐方式。也许它可以提供一些替代的阅读策略?顺便说一句,我已经删除了我原来的评论,因为它现在无关紧要了:-)