Skip to content

Provides simple input and output for Excel spreadsheets.

License

Notifications You must be signed in to change notification settings

lancra/SpreadsheetIO

Repository files navigation

SpreadsheetIO

This package is used to read and write to an Excel spreadsheet through model mappings. Writing includes support for styling and formatting cells.

Install

Install the NuGet package into your project.

PM> Install-Package LanceC.SpreadsheetIO
$ dotnet add package LanceC.SpreadsheetIO

Usage

Mapping

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);
    }
}

Reading

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>();
}

Writing

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);
}

About

Provides simple input and output for Excel spreadsheets.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages