Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/TinyCsvParser/TinyCsvParser
Easy to use, easy to extend and high-performance library for CSV parsing with .NET
https://github.com/TinyCsvParser/TinyCsvParser
csv-parser
Last synced: 18 days ago
JSON representation
Easy to use, easy to extend and high-performance library for CSV parsing with .NET
- Host: GitHub
- URL: https://github.com/TinyCsvParser/TinyCsvParser
- Owner: TinyCsvParser
- License: mit
- Created: 2015-09-13T11:04:14.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-02-22T16:44:26.000Z (9 months ago)
- Last Synced: 2024-04-13T18:41:38.308Z (7 months ago)
- Topics: csv-parser
- Language: C#
- Homepage:
- Size: 11 MB
- Stars: 369
- Watchers: 16
- Forks: 76
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TinyCsvParser #
[TinyCsvParser]: https://github.com/TinyCsvParser/TinyCsvParser
[MIT License]: https://opensource.org/licenses/MIT[TinyCsvParser] is a .NET library to parse CSV data in an easy and *fun way*, while offering very high performance and a very clean API. It is highly configurable to provide maximum flexibility.
To get started quickly, follow the [Quickstart](https://tinycsvparser.github.io/TinyCsvParser/sections/quickstart.html).
[TinyCsvParser] supports .NET Core.
## Installing TinyCsvParser ##
You can use [NuGet](https://www.nuget.org) to install [TinyCsvParser]. Run the following command
in the [Package Manager Console](http://docs.nuget.org/consume/package-manager-console).```powershell
PM> Install-Package TinyCsvParser
```## Community Packages ##
[@Miista]: https://github.com/Miista
[@Miista] provides several community packages to simplify working with TinyCsvParser:
* [TinyCsvParser.Optional](https://github.com/Miista/TinyCsvParser.Optional)
* [TinyCsvParser.Collections](https://github.com/Miista/TinyCsvParser.Collections)
* [TinyCsvParser.ImmutableCollections](https://github.com/Miista/TinyCsvParser.ImmutableCollections)
* [TinyCsvParser.Enums]()## Documentation and Changelog ##
[TinyCsvParser] comes with an official documentation and changelog:
* [https://tinycsvparser.github.io/TinyCsvParser/](https://tinycsvparser.github.io/TinyCsvParser/)
## Basic Usage ##
This is only an example for the most common use of TinyCsvParser. For more detailed information on custom formats and more advanced use-cases,
please consult the full [User Guide](https://tinycsvparser.github.io/TinyCsvParser/sections/userguide.html) of the official documentation.Imagine we have list of Persons in a CSV file ``persons.csv`` with their first name, last name and birthdate.
```csv
FirstName;LastName;BirthDate
Philipp;Wagner;1986/05/12
Max;Musterman;2014/01/02
```The corresponding domain model in our system might look like this.
```csharp
private class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
}
```When using [TinyCsvParser] you have to define the mapping between the columns in the CSV data and the property in you domain model.
```csharp
private class CsvPersonMapping : CsvMapping
{
public CsvPersonMapping()
: base()
{
MapProperty(0, x => x.FirstName);
MapProperty(1, x => x.LastName);
MapProperty(2, x => x.BirthDate);
}
}
```And then we can use the mapping to parse the CSV data with a ``CsvParser``.
```csharp
namespace TinyCsvParser.Test
{
[TestFixture]
public class TinyCsvParserTest
{
[Test]
public void TinyCsvTest()
{
CsvParserOptions csvParserOptions = new CsvParserOptions(true, ';');
CsvPersonMapping csvMapper = new CsvPersonMapping();
CsvParser csvParser = new CsvParser(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);
}
}
}
```## License ##
The library is released under terms of the [MIT License]:
* [https://github.com/TinyCsvParser/TinyCsvParser](https://github.com/TinyCsvParser/TinyCsvParser)