首頁 >後端開發 >C++ >如何在C#中有效解析CSV文件?

如何在C#中有效解析CSV文件?

DDD
DDD原創
2025-02-02 01:56:11881瀏覽

How Can I Efficiently Parse CSV Files in C#?

C# CSV文件解析:完整指南

在C#中解析CSV(逗號分隔值)文件是一項常見任務。雖然您可以自己構建解析器,但幸運的是,.NET框架提供了一個內置的解決方案。

C#中的默認CSV解析器

C#中的默認CSV解析器是TextFieldParser類,它位於Microsoft.VisualBasic程序集中。要使用它,請將以下引用添加到您的項目中:

<code>添加 > 引用... > Microsoft.VisualBasic</code>

使用TextFieldParser進行CSV解析

添加引用後,您可以使用以下代碼解析CSV文件:

<code class="language-csharp">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();
            }
        }
    }
}</code>

使用ODBC/OLE DB讀取CSV的缺點

雖然可以通過ODBC/OLE DB中的文本驅動程序讀取CSV文件,但有一些缺點使其不太理想:

  • 與專門的CSV庫相比,性能開銷更大
  • 功能有限(例如,沒有對標題行的內置支持)
  • 支持度和一致性實現較差

按列名讀取CSV

要按列名讀取CSV文件(使用第一行記錄作為標題),您可以使用CsvHelper庫,這是一個優秀的第三方選項,用於處理CSV文件。

<code class="language-csharp">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;
        }
    }
}</code>

總結

TextFieldParser類和CsvHelper庫為在C#中解析CSV文件提供了高效且全面的解決方案,包括處理標題行和按名稱讀取列的能力。通過使用這些工具,您可以簡化CSV解析任務並有效地處理數據。

以上是如何在C#中有效解析CSV文件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn