SheetToObjects icon indicating copy to clipboard operation
SheetToObjects copied to clipboard

Simple library which aims to provide developers with an easy solution to map sheets (Google Sheets, Microsoft Excel, csv) to models

Build status Nuget Version

What is SheetToObjects?

A simple library which aims to provide developers with an easy solution to map sheets (Google Sheets, Microsoft Excel, csv) to a model/POCO.

Quickstart

Below is an example on how to get started:

//1. configure
var sheetMapper = new SheetMapper()
    .AddConfigFor<SomeModel>(cfg => cfg
        .AddColumn(column => column.WithHeader("First Name").IsRequired().MapTo(m => m.FirstName))
        .AddColumn(column => column.WithHeader("Middle Name").MapTo(m => m.MiddleName))
        .AddColumn(column => column.WithHeader("Last Name").IsRequired().MapTo(m => m.LastName))
        .AddColumn(column => column.WithHeader("Email").IsRequired().ShouldHaveUniqueValue()
            .Matches("^\S+@\S+$").MapTo(m => m.Email))
        .AddColumn(column => column.WithHeader("Age").WithCustomRule<int>(age => age > 18 && age <= 67)
            .MapTo(m => m.Email))
    );

//2. get sheet data
var sheet = await _googleSheetProvider.GetAsync(mySheetId, "'My SheetName'!A1:H5", myApiKey);

//3. do the mapping
var result = _sheetMapper.Map<MyModel>(sheet);

Documentation

For more information, check out the wiki