
C# CSV文件解析:完整指南
在C#中解析CSV(逗號分隔值)文件是一項常見任務。雖然您可以自己構建解析器,但幸運的是,.NET框架提供了一個內置的解決方案。
C#中的默認CSV解析器
C#中的默認CSV解析器是TextFieldParser
類,它位於Microsoft.VisualBasic
程序集中。要使用它,請將以下引用添加到您的項目中:
1 | <code>添加 > 引用... > Microsoft.VisualBasic</code>
|
登入後複製
使用TextFieldParser進行CSV解析
添加引用後,您可以使用以下代碼解析CSV文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System.IO;
using Microsoft.VisualBasic.FileIO;
public static class CsvParser
{
public static IEnumerable<string[]> Parse(string filePath)
{
using ( var parser = new TextFieldParser(filePath))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters( "," );
while (!parser.EndOfData)
{
yield return parser.ReadFields();
}
}
}
}
|
登入後複製
使用ODBC/OLE DB讀取CSV的缺點
雖然可以通過ODBC/OLE DB中的文本驅動程序讀取CSV文件,但有一些缺點使其不太理想:
- 與專門的CSV庫相比,性能開銷更大
- 功能有限(例如,沒有對標題行的內置支持)
- 支持度和一致性實現較差
按列名讀取CSV
要按列名讀取CSV文件(使用第一行記錄作為標題),您可以使用CsvHelper庫,這是一個優秀的第三方選項,用於處理CSV文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 | using CsvHelper;
public static class CsvParser
{
public static IEnumerable<CsvRecord> ParseWithHeaders(string filePath)
{
using ( var reader = new CsvReader( new StreamReader(filePath)))
{
var records = reader.GetRecords<CsvRecord>();
return records;
}
}
}
|
登入後複製
總結
TextFieldParser
類和CsvHelper庫為在C#中解析CSV文件提供了高效且全面的解決方案,包括處理標題行和按名稱讀取列的能力。通過使用這些工具,您可以簡化CSV解析任務並有效地處理數據。
以上是如何在C#中有效解析CSV文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!