EPPlus.Core.Extensions 2.4.0

An extensions library for EPPlus package to generate and manipulate Excel files easily.

Install-Package EPPlus.Core.Extensions -Version 2.4.0
dotnet add package EPPlus.Core.Extensions --version 2.4.0
<PackageReference Include="EPPlus.Core.Extensions" Version="2.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EPPlus.Core.Extensions --version 2.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EPPlus.Core.Extensions, 2.4.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install EPPlus.Core.Extensions as a Cake Addin
#addin nuget:?package=EPPlus.Core.Extensions&version=2.4.0

// Install EPPlus.Core.Extensions as a Cake Tool
#tool nuget:?package=EPPlus.Core.Extensions&version=2.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
  • Converts IEnumerable<T> into an Excel worksheet/package
  • Reads data from Excel packages and convert them into a List<T>.
Basic examples:
public class PersonDto
    {      
        [ExcelTableColumn("First name")]
        [Required(ErrorMessage = "First name cannot be empty.")]
        [MaxLength(50, ErrorMessage = "First name cannot be more than {1} characters.")] 
        public string FirstName { get; set; }

        [ExcelTableColumn(columnName = "Last name", isOptional = true)]       
        public string LastName { get; set; }
        
        [ExcelTableColumn(3)]
        [Range(1900, 2050, ErrorMessage = "Please enter a value bigger than {1}")]
        public int YearBorn { get; set; }
        
        public decimal NotMapped { get; set; }

        [ExcelTableColumn(isOptional = true)]
        public decimal OptionalColumn1 { get; set; }

        [ExcelTableColumn(columnIndex=999, isOptional = true)]
        public decimal OptionalColumn2 { get; set; }
    }      
  • Converting from Excel to list of objects
    // Direct usage: 
        excelPackage.ToList<PersonDto>(configuration => configuration.SkipCastingErrors());

    // Specific worksheet: 
        excelPackage.GetWorksheet("Persons").ToList<PersonDto>(); 
  • From a list of objects to Excel package
    List<PersonDto> persons = new List<PersonDto>();
         
    // Convert list into ExcelPackage
        ExcelPackage excelPackage = persons.ToExcelPackage();

    // Convert list into byte array 
        byte[] excelPackageXlsx = persons.ToXlsx();
       

    // Generate ExcelPackage with configuration

    List<PersonDto> pre50 = persons.Where(x => x.YearBorn < 1950).ToList();
    List<PersonDto> post50 = persons.Where(x => x.YearBorn >= 1950).ToList();
        
    ExcelPackage excelPackage = pre50.ToWorksheet("< 1950")
                             .WithConfiguration(configuration => configuration.WithColumnConfiguration(x => x.AutoFit()))
                             .WithColumn(x => x.FirstName, "First Name")
                             .WithColumn(x => x.LastName, "Last Name")
                             .WithColumn(x => x.YearBorn, "Year of Birth")
                             .WithTitle("< 1950")
                             .NextWorksheet(post50, "> 1950")
                             .WithColumn(x => x.LastName, "Last Name")
                             .WithColumn(x => x.YearBorn, "Year of Birth")
                             .WithTitle("> 1950")
                             .ToExcelPackage(); 
  • Generating an Excel template from ExcelWorksheetAttribute marked classes
    [ExcelWorksheet("Stocks")]
    public class StocksDto
    {
        [ExcelTableColumn("SKU")]
        public string Barcode { get; set; }
    
        [ExcelTableColumn]
        public int Quantity { get; set; }
    }   

    // To ExcelPackage
    ExcelPackage excelPackage = Assembly.GetExecutingAssembly().GenerateExcelPackage(nameof(StocksDto));
 
    // To ExcelWorksheet
    using(var excelPackage = new ExcelPackage()){ 
    
        ExcelWorksheet worksheet = excelPackage.GenerateWorksheet(Assembly.GetExecutingAssembly(), nameof(StocksDto));
    
    }  
  • Converts IEnumerable<T> into an Excel worksheet/package
  • Reads data from Excel packages and convert them into a List<T>.
Basic examples:
public class PersonDto
    {      
        [ExcelTableColumn("First name")]
        [Required(ErrorMessage = "First name cannot be empty.")]
        [MaxLength(50, ErrorMessage = "First name cannot be more than {1} characters.")] 
        public string FirstName { get; set; }

        [ExcelTableColumn(columnName = "Last name", isOptional = true)]       
        public string LastName { get; set; }
        
        [ExcelTableColumn(3)]
        [Range(1900, 2050, ErrorMessage = "Please enter a value bigger than {1}")]
        public int YearBorn { get; set; }
        
        public decimal NotMapped { get; set; }

        [ExcelTableColumn(isOptional = true)]
        public decimal OptionalColumn1 { get; set; }

        [ExcelTableColumn(columnIndex=999, isOptional = true)]
        public decimal OptionalColumn2 { get; set; }
    }      
  • Converting from Excel to list of objects
    // Direct usage: 
        excelPackage.ToList<PersonDto>(configuration => configuration.SkipCastingErrors());

    // Specific worksheet: 
        excelPackage.GetWorksheet("Persons").ToList<PersonDto>(); 
  • From a list of objects to Excel package
    List<PersonDto> persons = new List<PersonDto>();
         
    // Convert list into ExcelPackage
        ExcelPackage excelPackage = persons.ToExcelPackage();

    // Convert list into byte array 
        byte[] excelPackageXlsx = persons.ToXlsx();
       

    // Generate ExcelPackage with configuration

    List<PersonDto> pre50 = persons.Where(x => x.YearBorn < 1950).ToList();
    List<PersonDto> post50 = persons.Where(x => x.YearBorn >= 1950).ToList();
        
    ExcelPackage excelPackage = pre50.ToWorksheet("< 1950")
                             .WithConfiguration(configuration => configuration.WithColumnConfiguration(x => x.AutoFit()))
                             .WithColumn(x => x.FirstName, "First Name")
                             .WithColumn(x => x.LastName, "Last Name")
                             .WithColumn(x => x.YearBorn, "Year of Birth")
                             .WithTitle("< 1950")
                             .NextWorksheet(post50, "> 1950")
                             .WithColumn(x => x.LastName, "Last Name")
                             .WithColumn(x => x.YearBorn, "Year of Birth")
                             .WithTitle("> 1950")
                             .ToExcelPackage(); 
  • Generating an Excel template from ExcelWorksheetAttribute marked classes
    [ExcelWorksheet("Stocks")]
    public class StocksDto
    {
        [ExcelTableColumn("SKU")]
        public string Barcode { get; set; }
    
        [ExcelTableColumn]
        public int Quantity { get; set; }
    }   

    // To ExcelPackage
    ExcelPackage excelPackage = Assembly.GetExecutingAssembly().GenerateExcelPackage(nameof(StocksDto));
 
    // To ExcelWorksheet
    using(var excelPackage = new ExcelPackage()){ 
    
        ExcelWorksheet worksheet = excelPackage.GenerateWorksheet(Assembly.GetExecutingAssembly(), nameof(StocksDto));
    
    }  

NuGet packages (7)

Showing the top 5 NuGet packages that depend on EPPlus.Core.Extensions:

Package Downloads
Tradeber.AbpCore.ServiceFabric
tradeber 基础设施库
IvyBaby.Infrastructure
暂无
Alizhou.Office
根据模板导入导出word,execl
FileReaders
Package Description
AspNetCore2.Utils
Common Utils for AspNetCore And .Net Core 2.x

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on EPPlus.Core.Extensions:

Repository Stars
WeihanLi/WeihanLi.Npoi
NPOI Extensions, excel/csv importer/exporter for IEnumerable<T>/DataTable, fluentapi(great flexibility)/attribute configuration

Version History

Version Downloads Last updated
2.4.0 81,242 1/5/2020
2.3.2 55,896 4/8/2019
2.3.1 5,414 3/19/2019
2.3.0 2,247 3/7/2019
2.2.4 28,042 8/9/2018
2.2.3 2,548 6/27/2018
2.2.2 633 6/26/2018
2.2.1 3,152 6/5/2018
2.2.0 686 6/2/2018
2.1.0 4,229 5/26/2018
2.0.0 887 5/16/2018
2.0.0-preview1 536 5/15/2018
1.2.8 1,646 4/13/2018
1.2.7 4,046 2/26/2018
1.2.6 1,870 2/11/2018
1.2.5 963 2/9/2018
1.2.4 3,172 11/27/2017
1.2.3 1,213 11/8/2017
1.2.2 744 11/7/2017
1.2.1 611 11/6/2017
1.2.0 1,371 10/14/2017
1.1.9 903 10/3/2017
1.1.8 711 9/27/2017
1.1.7 560 9/27/2017
1.1.6 532 9/27/2017
1.1.5 725 9/21/2017
1.1.4 558 9/18/2017
1.1.3 568 9/16/2017
1.1.2 836 8/25/2017
1.1.1 558 8/25/2017
1.1.0 588 8/24/2017
1.0.2 575 8/24/2017
1.0.1 573 8/22/2017
1.0.0 601 8/21/2017
1.0.0-preview2 756 8/20/2017
1.0.0-preview1 1,054 8/19/2017