This package is used to read and write to an Excel spreadsheet through model mappings. Writing includes support for styling and formatting cells.
Install the NuGet package into your project.
PM> Install-Package LanceC.SpreadsheetIO
$ dotnet add package LanceC.SpreadsheetIO
public class Model
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ModelMapConfiguration : IResourceMapConfiguration<Model>
{
public void Configure(IResourceMapBuilder<Model> builder)
{
builder.Property(model => model.Id);
builder.Property(model => model.Name);
}
}
public void Read(string filePath)
{
var provider = new ServiceCollection()
.AddSpreadsheetIO(map => map.ApplyConfiguration(new ModelMapConfiguration()))
.BuildServiceProvider();
using var spreadsheetStream = new FileStream(
filePath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite);
var spreadsheetFactory = provider.GetRequiredService<ISpreadsheetFactory>();
var spreadsheet = spreadsheetFactory.OpenRead(spreadsheetStream);
var spreadsheetPage = spreadsheet.Pages[0];
var readingResult = spreadsheetPage.ReadAll<Model>();
}
public void Write(string filePath, IEnumerable<Model> models)
{
var provider = new ServiceCollection()
.AddSpreadsheetIO(map => map.ApplyConfiguration(new ModelMapConfiguration()))
.BuildServiceProvider();
using var spreadsheetStream = new FileStream(
filePath,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.ReadWrite);
var spreadsheetFactory = provider.GetRequiredService<ISpreadsheetFactory>();
using var spreadsheet = spreadsheetFactory.Create(spreadsheetStream);
using var spreadsheetPage = spreadsheet.WritePage<Model>("Sheet1", models);
}