Open Source library for automatic formatted file read/write operations. This is a .NET 9 fork maintained by RetailerSoft.
$ dotnet add package FileHelpers.CoreA powerful and easy-to-use .NET library for importing and exporting data from fixed-length or delimited files, strings, or streams.
dotnet add package FileHelpers.Core
using FileHelpers.Core;
// Define your record class
[DelimitedRecord(",")]
public class Customer
{
public string Name { get; set; }
public string Email { get; set; }
public DateTime RegisterDate { get; set; }
}
// Read the file
var engine = new FileHelperEngine<Customer>();
var records = engine.ReadFile("customers.csv");
foreach (var customer in records)
{
Console.WriteLine($"{customer.Name} - {customer.Email}");
}
var customers = new List<Customer>
{
new Customer { Name = "John Doe", Email = "john@example.com", RegisterDate = DateTime.Now },
new Customer { Name = "Jane Smith", Email = "jane@example.com", RegisterDate = DateTime.Now }
};
var engine = new FileHelperEngine<Customer>();
engine.WriteFile("output.csv", customers);
[FixedLengthRecord]
public class Product
{
[FieldFixedLength(10)]
public string SKU { get; set; }
[FieldFixedLength(30)]
public string Description { get; set; }
[FieldFixedLength(8)]
[FieldConverter(ConverterKind.Decimal)]
public decimal Price { get; set; }
}
[DelimitedRecord(",")]
public class Order
{
public int OrderId { get; set; }
[FieldConverter(typeof(MyCustomDateConverter))]
public DateTime OrderDate { get; set; }
}
var engine = new FileHelperEngine<Customer>();
engine.ErrorMode = ErrorMode.SaveAndContinue;
var records = engine.ReadFile("data.csv");
if (engine.ErrorManager.HasErrors)
{
foreach (var error in engine.ErrorManager.Errors)
{
Console.WriteLine($"Line {error.LineNumber}: {error.ExceptionInfo.Message}");
}
}
var engine = new FileHelperAsyncEngine<Customer>();
using (engine.BeginReadFile("large-file.csv"))
{
await foreach (var customer in engine.ReadNextAsync())
{
// Process each record
}
}
This is a maintained fork of the FileHelpers library, targeting .NET 9. The original FileHelpers library was created by Marcos Meli.
For more examples and detailed documentation, visit:
Contributions are welcome! Please feel free to submit issues or pull requests.
MIT License - See LICENSE file for details
Original FileHelpers library: Copyright (c) Marcos Meli - Devoo
This fork: Maintained by RetailerSoft
[DelimitedRecord(",")]
[IgnoreFirst(1)] // Skip header row
public class DataRecord
{
public string Column1 { get; set; }
public string Column2 { get; set; }
}
var engine = new FileHelperEngine<Customer>();
var records = engine.ReadFile("data.csv")
.Where(c => c.RegisterDate > DateTime.Now.AddYears(-1));
var engine = new FileHelperEngine<Customer>();
engine.HeaderText = "Name,Email,Registration Date";
engine.WriteFile("output.csv", customers);
FileHelperAsyncEngine for large filesErrorMode.IgnoreAndContinue if you don't need error detailsPerfect for importing data from spreadsheets into your application.
Generate CSV files for reporting and data exchange.
Move data between systems using flat files.
Extract, transform, and load data pipelines.
Parse structured log files into .NET objects.
FileHelpers.Core - Making file I/O simple and elegant for .NET developers! ??