Csv 2.0.170
csv
Really simple csv library
Install
To install csv, use the following command in the Package Manager Console
PM> Install-Package Csv
Basic Usage
More examples can be found in the tests.
Reading a CSV file
// NOTE: Library assumes that the csv data will have a header row by default, see CsvOptions.HeaderMode
/*
# comments are ignored
Column name,Second column,Third column
First cell,second cell,
Second row,second cell,third cell
*/
var csv = File.ReadAllText("sample.csv");
foreach (var line in CsvReader.ReadFromText(csv))
{
// Header is handled, each line will contain the actual row data
var firstCell = line[0];
var byName = line["Column name"];
}
CsvReader
also supports reading from a TextReader
(CsvReader.Read(TextReader, CsvOptions)
) or a Stream
(CsvReader.ReadFromStream(Stream, CsvOptions)
)
For .NET Standard 2.1 or .NET 5+ the library exposes CsvReader.ReadAsync
and
CsvReader.ReadFromStreamAsync
which return IAsyncEnumerable<ICsvLine>
.
There is also CsvReader.ReadFromMemory
to read from a ReadOnlyMemory<char>
without allocating intermediate strings.
CsvOptions
can be used to configure the csv parsing:
var options = new CsvOptions // Defaults
{
RowsToSkip = 0, // Allows skipping of initial rows without csv data
SkipRow = (row, idx) => string.IsNullOrEmpty(row) || row[0] == '#',
Separator = '\0', // Autodetects based on first row
TrimData = false, // Can be used to trim each cell
Comparer = null, // Can be used for case-insensitive comparison for names
HeaderMode = HeaderMode.HeaderPresent, // Assumes first row is a header row
ValidateColumnCount = false, // Checks each row immediately for column count
ReturnEmptyForMissingColumn = false, // Allows for accessing invalid column names
Aliases = null, // A collection of alternative column names
AllowNewLineInEnclosedFieldValues = false, // Respects new line (either \r\n or \n) characters inside field values enclosed in double quotes.
AllowBackSlashToEscapeQuote = false, // Allows the sequence "\"" to be a valid quoted value (in addition to the standard """")
AllowSingleQuoteToEncloseFieldValues = false, // Allows the single-quote character to be used to enclose field values
NewLine = Environment.NewLine // The new line string to use when multiline field values are read (Requires "AllowNewLineInEnclosedFieldValues" to be set to "true" for this to have any effect.)
};
Writing a CSV file
var columnNames = new [] { "Id", "Name" };
var rows = new []
{
new [] { "0", "John Doe" },
new [] { "1", "Jane Doe" }
};
var csv = CsvWriter.WriteToText(columnNames, rows, ',');
File.WriteAllText("people.csv", csv);
/*
Writes the following to the file:
Id,Name
0,John Doe
1,Jane Doe
*/
CsvWriter
also includes asynchronous overloads (WriteAsync
and
WriteToTextAsync
) which operate on IAsyncEnumerable<string[]>
and support
passing a CancellationToken
.
Helper extensions
CsvReader
provides extension methods to work with the returned
IEnumerable<ICsvLine>
:
GetColumn(int columnNo)
/GetColumn<T>(int columnNo, Func<string, T>)
– extract a single column from all rows.GetBlock(int row_start = 0, int row_length = -1, int col_start = 0, int col_length = -1)
– get a rectangular subset of the data.
Build status
License
Showing the top 20 packages that depend on Csv.
Packages | Downloads |
---|---|
Zebra.Printer.SDK
The Zebra Link-OS SDK provides a powerful set of APIs enabling creation of apps that take full advantage of the printer's operating system features including, connectivity, printing and management tasks.
|
1 |
Zebra.Printer.SDK
The Zebra Link-OS SDK provides a powerful set of APIs enabling creation of apps that take full advantage of the printer's operating system features including, connectivity, printing and management tasks.
|
2 |
.NET 8.0
- No dependencies.
.NET 9.0
- No dependencies.
.NET Standard 2.0
- No dependencies.
Version | Downloads | Last updated |
---|---|---|
2.0.170 | 5 | 05/23/2025 |
2.0.128 | 7 | 03/14/2025 |
2.0.93 | 12 | 12/16/2024 |
2.0.87 | 14 | 01/08/2025 |
2.0.84 | 13 | 01/03/2025 |
2.0.80 | 12 | 01/03/2025 |
2.0.76 | 14 | 01/04/2025 |
2.0.67 | 13 | 01/08/2025 |
2.0.65 | 12 | 01/03/2025 |
2.0.64 | 11 | 01/03/2025 |
2.0.62 | 10 | 01/03/2025 |
2.0.61 | 12 | 01/02/2025 |
1.0.58 | 11 | 01/04/2025 |
1.0.57 | 10 | 01/02/2025 |
1.0.55 | 10 | 01/03/2025 |
1.0.53 | 11 | 01/03/2025 |
1.0.52 | 11 | 01/02/2025 |
1.0.51 | 14 | 01/04/2025 |
1.0.48 | 11 | 01/04/2025 |
1.0.40 | 14 | 01/04/2025 |
1.0.39 | 10 | 01/02/2025 |
1.0.38 | 11 | 01/03/2025 |
1.0.35 | 12 | 01/04/2025 |
1.0.34 | 12 | 01/02/2025 |
1.0.31 | 14 | 01/04/2025 |
1.0.29 | 11 | 01/03/2025 |
1.0.12 | 10 | 01/03/2025 |
1.0.11 | 11 | 01/03/2025 |
1.0.10 | 12 | 01/03/2025 |
1.0.9 | 12 | 01/03/2025 |
1.0.7 | 10 | 01/04/2025 |
1.0.6 | 11 | 01/03/2025 |
1.0.4 | 10 | 01/03/2025 |
1.0.0 | 11 | 01/03/2025 |