Skip to content

1. Getting started

Jos de Weger edited this page Feb 28, 2022 · 1 revision

Installation

SheetToObjects targets .netstandard 2.0 and .NET Framework 4.5.2. Currently SheetToObjects has adapters for Microsoft Excel, Google Sheets (public and protected) and CSV. Install any off the following packages via the Package Manager in Visual Studio:
SheetToObjects.Adapters.MicrosoftExcel
SheetToObjects.Adapters.GoogleSheets
SheetToObjects.Adapters.ProtectedGoogleSheets
SheetToObjects.Adapters.Csv

Or use the dotnet add package command:
dotnet add package SheetToObjects.Adapters.MicrosoftExcel
dotnet add package SheetToObjects.Adapters.GoogleSheets
dotnet add package SheetToObjects.Adapters.ProtectedGoogleSheets
dotnet add package SheetToObjects.Adapters.Csv

Usage

  1. Create a configuration, mapping each column to a property on your model/POCO:
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").Matches("^\S+@\S+$").MapTo(m => m.Email))
        .AddColumn(column => column.WithHeader("Age").WithCustomRule<int>(age => age > 18 && age <= 67).MapTo(m => m.Email))
    );
  1. Get the sheetdata using one of the adapters (e.g. Google Sheets):
var sheet = await _googleSheetAdapter.GetAsync(mySheetId, "'My SheetName'!A1:H5", myApiKey);
  1. Do the actual mapping, which returns a result object containing validation and mapped models:
var result = sheetMapper.Map<MyModel>(sheet);