C# (.NET) में CSV के साथ कार्य: पूर्ण गाइड
CSV (कॉमा-सेपरेटेड वैल्यूज़) सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे सामान्य प्रारूपों में से एक है। C# (.NET) इकोसिस्टम में CSV फ़ाइलों के साथ काम करने के कई तरीके हैं: मैन्युअल पार्सिंग से लेकर शक्तिशाली तृतीय-पक्ष लाइब्रेरीज़ के उपयोग तक। इस लेख में, हम .NET में CSV डेटा को पढ़ने, लिखने और प्रोसेस करने के सभी बुनियादी तरीकों पर चर्चा करेंगे।
1. StreamReader का उपयोग करके मैन्युअल CSV पार्सिंग
सबसे सरल तरीका मानक क्लासेस StreamReader और String.Split का उपयोग करना है। हालाँकि, यह विधि जटिल मामलों (उद्धरण, डेटा के अंदर कॉमा, लाइन ब्रेक) को ध्यान में नहीं रखती है।
using System;using System.IO;using System.Linq;
public class CsvSimpleReader{ public void ReadCsv(string filePath) { using (var reader = new StreamReader(filePath)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); Console.WriteLine(string.Join(" | ", values)); } } }}कमियाँ: एस्केप किए गए कॉमा और उद्धरणों को संसाधित नहीं करता। वास्तविक प्रोजेक्ट्स के लिए अधिक विश्वसनीय तरीकों का उपयोग करें।
2. Microsoft.VisualBasic.FileIO.TextFieldParser का उपयोग (.NET Framework के लिए)
.NET Framework में एक अंतर्निहित CSV पार्सर है — TextFieldParser। यह उद्धरणों और विभाजकों को सही ढंग से संभालता है।
using Microsoft.VisualBasic.FileIO;using System;using System.IO;
public class CsvTextFieldParser{ public void ParseCsv(string filePath) { using (var parser = new TextFieldParser(filePath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(",");
while (!parser.EndOfData) { string[] fields = parser.ReadFields(); Console.WriteLine(string.Join(" | ", fields)); } } }}महत्वपूर्ण: .NET Core / .NET 5+ में, यह क्लास पैकेज Microsoft.VisualBasic (NuGet) के माध्यम से उपलब्ध है।
3. CsvHelper लाइब्रेरी (अनुशंसित तरीका)
CsvHelper .NET में CSV के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह क्लासेस पर मैपिंग, LINQ क्वेरीज़, विभाजक और एन्कोडिंग कॉन्फ़िगरेशन का समर्थन करती है।
NuGet के माध्यम से इंस्टॉलेशन:
Install-Package CsvHelper3.1 ऑब्जेक्ट्स की सूची में CSV पढ़ना
using System.Globalization;using CsvHelper;using CsvHelper.Configuration;using System.IO;using System.Linq;using System.Collections.Generic;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
public void ReadCsvWithCsvHelper(string filePath){ var config = new CsvConfiguration(CultureInfo.InvariantCulture) { HasHeaderRecord = true, Delimiter = ",", MissingFieldFound = null };
using (var reader = new StreamReader(filePath)) using (var csv = new CsvReader(reader, config)) { var records = csv.GetRecords<Person>().ToList(); foreach (var person in records) { Console.WriteLine($"{person.Name}, {person.Age}, {person.Email}"); } }}3.2 ऑब्जेक्ट्स के संग्रह से CSV लिखना
public void WriteCsvWithCsvHelper(string filePath, List<Person> people){ using (var writer = new StreamWriter(filePath)) using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) { csv.WriteRecords(people); }}3.3 मैन्युअल फ़ील्ड प्रबंधन (मैपिंग के बिना)
public void ManualCsvWrite(string filePath){ using (var writer = new StreamWriter(filePath)) using (va