GithubHelp home page GithubHelp logo

amferguson / epplusenumerable Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maxime-antoine/epplusenumerable

0.0 1.0 0.0 671 KB

Easily create multi-worksheet Excel documents from any .NET object collection.

License: MIT License

C# 100.00%

epplusenumerable's Introduction

EPPlusEnumerable

Easily create multi-worksheet Excel documents from any .NET object collection.

Usage

Let's say you're working on an ASP.NET web app and want to create a report of all users and orders.

public ActionResult DownloadReport()
{
    var data = new List<IEnumerable<object>>();
    
    using (var db = new SampleDataContext())
    {
        data.Add(db.Users.OrderBy(x => x.Name).ToList());

        foreach(var grouping in db.Orders.OrderBy(x => x.Date).GroupBy(x => x.Date.Month))
        {
            data.Add(grouping.ToList());
        }
    }
    
    var bytes = Spreadsheet.Create(data);
    return File(bytes, "application/vnd.ms-excel", "MySpreadsheet.xlsx");
}

That will give you a nicely-formatted Excel spreadsheet with tabs for both "Users" and "Orders," like so:

output

There's also a SpreadsheetLinkAttribute class which you can use to generate links between tabs on your spreadsheet.

[DisplayName("Orders"), SpreadsheetTableStyle(TableStyles.Medium16)]
public class Order
{
    public int Number { get; set; }

    [SpreadsheetCellStyle(bold: true, backgroundHtmlColor: "#00cc00", fontHtmlColor: "lime")]
    public string Item { get; set; }

    [SpreadsheetLink("Customers", "Name")]
    public string Customer { get; set; }

    [DisplayFormat(DataFormatString = "{0:c}")]
    public decimal Price { get; set; }

    [SpreadsheetTabName(FormatString = "{0:MMMM yyyy}")]
    public DateTime Date { get; set; }
}

In this example, the "Customer" values in the Orders tab will be linked to the corresponding Customers tab row where the Name is equal to the value of the Order object's Customer property.

In addition, the SpreadsheetTabName attribute specifies that the value of the given property should be used to name the tab in Excel. The first value of the collection will be used to generate the name of the tab. You can optionally specify a FormatString as above.

links

There's also a SpreadsheetExclude attribute you can use if you don't want to include a column for a given property in the generated spreadsheet.

P.S. DisplayName or Display(Name="") attributes will be used for worksheet names if used on the class, or column headers if used on a property.

epplusenumerable's People

Contributors

amferguson avatar andrewmurray avatar aricept avatar bradwestness avatar issafram avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.