मैंने TinyCsvParser लिखा है .NET के लिए , जो कि सबसे तेज़ .NET पार्सर में से एक है और लगभग किसी भी CSV प्रारूप को पार्स करने के लिए अत्यधिक विन्यास योग्य है।
यह एमआईटी लाइसेंस के तहत जारी किया गया है:
आप इसे स्थापित करने के लिए NuGet का उपयोग कर सकते हैं । पैकेज प्रबंधक कंसोल में निम्न आदेश चलाएँ ।
PM> Install-Package TinyCsvParser
प्रयोग
कल्पना करें कि हमारे पास CSV फ़ाइल में व्यक्तियों का persons.csv
नाम उनके पहले नाम, अंतिम नाम और जन्मतिथि के साथ है।
FirstName;LastName;BirthDate
Philipp;Wagner;1986/05/12
Max;Musterman;2014/01/02
हमारे सिस्टम में संबंधित डोमेन मॉडल इस तरह दिख सकता है।
private class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
}
TinyCsvParser का उपयोग करते समय आपको CSV डेटा और आपके डोमेन मॉडल में मौजूद प्रॉपर्टी के बीच मैपिंग को परिभाषित करना होगा।
private class CsvPersonMapping : CsvMapping<Person>
{
public CsvPersonMapping()
: base()
{
MapProperty(0, x => x.FirstName);
MapProperty(1, x => x.LastName);
MapProperty(2, x => x.BirthDate);
}
}
और फिर हम CSV डेटा को पार्स करने के लिए मैपिंग का उपयोग कर सकते हैं a CsvParser
।
namespace TinyCsvParser.Test
{
[TestFixture]
public class TinyCsvParserTest
{
[Test]
public void TinyCsvTest()
{
CsvParserOptions csvParserOptions = new CsvParserOptions(true, new[] { ';' });
CsvPersonMapping csvMapper = new CsvPersonMapping();
CsvParser<Person> csvParser = new CsvParser<Person>(csvParserOptions, csvMapper);
var result = csvParser
.ReadFromFile(@"persons.csv", Encoding.ASCII)
.ToList();
Assert.AreEqual(2, result.Count);
Assert.IsTrue(result.All(x => x.IsValid));
Assert.AreEqual("Philipp", result[0].Result.FirstName);
Assert.AreEqual("Wagner", result[0].Result.LastName);
Assert.AreEqual(1986, result[0].Result.BirthDate.Year);
Assert.AreEqual(5, result[0].Result.BirthDate.Month);
Assert.AreEqual(12, result[0].Result.BirthDate.Day);
Assert.AreEqual("Max", result[1].Result.FirstName);
Assert.AreEqual("Mustermann", result[1].Result.LastName);
Assert.AreEqual(2014, result[1].Result.BirthDate.Year);
Assert.AreEqual(1, result[1].Result.BirthDate.Month);
Assert.AreEqual(1, result[1].Result.BirthDate.Day);
}
}
}
उपयोगकर्ता गाइड
एक पूर्ण उपयोगकर्ता गाइड यहां उपलब्ध है: