https://github.com/jitbit/csvexport
Very simple CSV-export tool for C#
https://github.com/jitbit/csvexport
c-sharp csv csv-export dotnet
Last synced: about 1 month ago
JSON representation
Very simple CSV-export tool for C#
- Host: GitHub
- URL: https://github.com/jitbit/csvexport
- Owner: jitbit
- License: mit
- Created: 2015-01-30T20:32:34.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-03-05T01:20:55.000Z (3 months ago)
- Last Synced: 2025-05-15T07:03:25.968Z (about 1 month ago)
- Topics: c-sharp, csv, csv-export, dotnet
- Language: C#
- Homepage: https://www.jitbit.com
- Size: 80.1 KB
- Stars: 172
- Watchers: 13
- Forks: 64
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CsvExport
A very simple and very fast CSV-export tool for C#.[](https://github.com/jitbit/CsvExport/actions/workflows/dotnet.yml)
## Features
1. Excel-compatible export (separator detected automatically, friendly-trimming rows and values for compatibility)
2. Escapes commas, quotes, multiline text
3. Exports dates in timezone-proof format
4. Extremely easy to use
5. NET Standard 2.0 library (compatible with both .NET Core and .NET Framework)
6. 30 times faster than CsvHelper
7. 4-times less memory usage## Benchmarks
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
|------------------ |------------:|----------:|---------:|--------:|-------:|----------:|
| 😟 CsvHelper | 1,300.38 us | 32.043 us | 1.756 us | 17.5781 | 7.8125 | 114.25 KB |
| ✅ CsvExport_Manual | 31.22 us | 5.750 us | 0.315 us | 4.7607 | 0.2441 | 29.37 KB |
| ✅ CsvExport_Typed | 52.68 us | 1.453 us | 0.080 us | 4.7607 | 0.1221 | 29.46 KB |This benchmark is generating a 100-line CSV file with 4 columns. Check the "SpeedBenchmarks" code.
## Usage examples:
Install via Nuget `Install-Package CsvExport`
For "manual" CSV ad-hoc generation use this:
```c#
var myExport = new CsvExport();myExport.AddRow();
myExport["Region"] = "Los Angeles, USA";
myExport["Sales"] = 100000;
myExport["Date Opened"] = new DateTime(2003, 12, 31);myExport.AddRow();
myExport["Region"] = "Canberra \"in\" Australia";
myExport["Sales"] = 50000;
myExport["Date Opened"] = new DateTime(2005, 1, 1, 9, 30, 0);///ASP.NET MVC action example
return File(myExport.ExportAsMemoryStream(), "text/csv", "results.csv");
```For generating CSV out of a typed `List` of objects:
```c#
public class Foo
{
public string Region { get; set; }
public int Sales { get; set; }
public DateTime DateOpened { get; set; }
}var list = new List
{
new Foo { Region = "Los Angeles", Sales = 123321, DateOpened = DateTime.Now },
new Foo { Region = "Canberra in Australia", Sales = 123321, DateOpened = DateTime.Now },
};var myExport = new CsvExport();
myExport.AddRows(list);
string csv = myExport.Export();
```
Configuring is done via constructor parameters:```c#
var myExport = new CsvExport(
columnSeparator: ",",
includeColumnSeparatorDefinitionPreamble: true, //Excel wants this in CSV files
includeHeaderRow: true
);
```Also, methods `ExportToFile` and `ExportAsMemoryStream` and `ExportToBytes` offer an optional encoding parameter.
### License
The code is licensed under *[MIT License](/LICENSE)*.
Sucessfully tested for years in production with our [Jitbit Helpdesk Ticketing System](https://www.jitbit.com/helpdesk/)