C# (.NET) में CSV के साथ कार्य: सरल पार्सिंग से लेकर उन्नत लाइब्रेरी तक
\n\nCSV (Comma-Separated Values) — सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे सामान्य प्रारूपों में से एक है। .NET इकोसिस्टम में CSV के साथ कार्य करने के लिए कई दृष्टिकोण मौजूद हैं: अंतर्निहित साधनों से लेकर विशेष लाइब्रेरीज़ तक। इस लेख में हम सभी मुख्य तरीकों पर चर्चा करेंगे, कोड उदाहरण दिखाएंगे और आपके प्रोजेक्ट के लिए सर्वोत्तम उपकरण चुनने में मदद करेंगे।
\n\n1. .NET के अंतर्निहित साधन (मैन्युअल पार्सिंग)
\nसबसे सरल तरीका StreamReader और String.Split क्लास का उपयोग करना है। हालाँकि, यह विधि फ़ील्ड के अंदर कोट्स और कॉमा के एस्केपिंग को ध्यान में नहीं रखती है, इसलिए यह केवल जटिल डेटा के बिना सरल CSV फ़ाइलों के लिए उपयुक्त है।
using System;\nusing System.IO;\nusing System.Linq;\n\npublic class SimpleCsvReader\n{\n public static void ReadCsv(string filePath)\n {\n using (var reader = new StreamReader(filePath))\n {\n while (!reader.EndOfStream)\n {\n var line = reader.ReadLine();\n var values = line.Split(',');\n \n // पंक्ति प्रसंस्करण\n Console.WriteLine(string.Join(" | ", values));\n }\n }\n }\n}\n\nकमियाँ: कोट्स को संभालता नहीं, बहु-पंक्ति फ़ील्ड का समर्थन नहीं करता, कोई टाइपिंग नहीं।
\n\n2. TextFieldParser (Microsoft.VisualBasic) का उपयोग
\nMicrosoft.VisualBasic.FileIO नाम स्थान का TextFieldParser क्लास कोट्स और विभाजकों के साथ CSV को सही ढंग से संभाल सकता है। उपयोग के लिए Microsoft.VisualBasic असेंबली का संदर्भ जोड़ें।
using Microsoft.VisualBasic.FileIO;\nusing System;\n\npublic class TextFieldParserExample\n{\n public static void ParseCsv(string filePath)\n {\n using (var parser = new TextFieldParser(filePath))\n {\n parser.TextFieldType = FieldType.Delimited;\n parser.SetDelimiters(",");\n parser.HasFieldsEnclosedInQuotes = true;\n\n while (!parser.EndOfData)\n {\n string[] fields = parser.ReadFields();\n Console.WriteLine(string.Join(" | ", fields));\n }\n }\n }\n}\n\nयह विधि बेहतर है, लेकिन फिर भी ऑब्जेक्ट में फ़ील्ड के मैन्युअल मैपिंग की आवश्यकता होती है।
\n\n3. CsvHelper लाइब्रेरी — स्वर्ण मानक
\nCsvHelper .NET में CSV के साथ कार्य करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह RFC 4180 मानक का पूर्ण समर्थन, क्लास पर स्वचालित मैपिंग, LINQ समर्थन और उच्च प्रदर्शन प्रदान करती है।
\n\nस्थापना
\ndotnet add package CsvHelper\n\nऑब्जेक्ट की सूची में CSV पढ़ने का उदाहरण
\nusing CsvHelper;\nusing CsvHelper.Configuration;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\n\npublic class Person\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n public DateTime BirthDate { get; set; }\n}\n\npublic class CsvHelperReader\n{\n public static List<Person> ReadPeople(string filePath)\n {\n using (var reader = new StreamReader(filePath))\n using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))\n {\n return csv.GetRecords<Person>().ToList();\n }\n }\n}\n\nसंग्रह से CSV लिखने का उदाहरण
\npublic static void WritePeople(string filePath, List<Person> people)\n{\n using (var writer = new StreamWriter(filePath))\n using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))\n {\n csv.WriteRecords(people);\n }\n}\n\nउन्नत कॉन्फ़िगरेशन
\nvar config = new CsvConfiguration(CultureInfo.InvariantCulture)\n{\n HasHeaderRec