Back To Tutorials

SpreadsheetGear for .NET Standard Tutorials

ASP.NET Core MVC - Excel Reporting with Template using .NET Core CLI

Follow these steps to create a simple ASP.NET Core MVC Web App with the .NET Core Command Line Interface (CLI) that utilizes SpreadsheetGear for .NET Standard to stream a Microsoft Excel workbook to the browser. The downloaded workbook is populated from an Excel template file that utilizes a variety of Conditional Formatting options, such as Color Scales and Icon Sets.

Prerequisites:

Create a new ASP.NET Core MVC Web App

  1. Open up a Command Prompt and navigate the folder where you want to add this project (note: the next step will create a subfolder fully containing this project).
  2. Enter the following commands to create a new ASP.NET Core MVC Web App with a name of "SpreadsheetGearWebApp":
        dotnet new mvc -o SpreadsheetGearWebApp
        cd SpreadsheetGearWebApp

Add SpreadsheetGear for .NET Standard to your project

  1. Enter the following commands in the Command Prompt:
        dotnet add package SpreadsheetGear
        dotnet restore
        dotnet run
  2. The above commands should add a dependency to SpreadsheetGear for .NET Standard, restore all NuGet dependencies in your project, then build and run the web app on localhost, port 5000
  3. Navigate to http://localhost:5000 in your browser to ensure the app is running correctly.
  4. Go back to the Command Prompt and type Ctrl+C to shut down the web app.

Add Excel Template file to your project

  1. Create a "Files" folder under your Web App's root project folder.
  2. Download and save this Excel template file to this "Files" folder.

Inject IHostingEnvironment

  1. Opening and processing "Files/ReportTemplate.xlsx" requires accessing the web server's local file system, which can be done with IHostingEnvironment. Use MVC's built-in Dependency Injection to get an instance of this object in the HomeController class by adding the following to the beginning of the class (located in /Controllers/HomeController.cs):
    ...
    public class HomeController : Controller
    {
        Microsoft.AspNetCore.Hosting.IHostingEnvironment _hostingEnv;
    
        public HomeController(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv)
        {
            _hostingEnv = hostingEnv;
        }
        ...

Add new Action Method to HomeController

  1. Add the following action method to the HomeController class:
        public IActionResult DownloadReportFromTemplate()
        {
            // Open a stream to the template workbook file.
            Microsoft.Extensions.FileProviders.IFileInfo fileInfo = 
              _hostingEnv.ContentRootFileProvider.GetFileInfo("Files/ReportTemplate.xlsx");
            System.IO.Stream readStream = fileInfo.CreateReadStream();
    
            // Create a new "workbook set" object and open the above file stream.
            SpreadsheetGear.IWorkbookSet workbookSet = 
              SpreadsheetGear.Factory.GetWorkbookSet();
            SpreadsheetGear.IWorkbook workbook = 
              workbookSet.Workbooks.OpenFromStream(readStream);
    
            // The defined name "DataRange" will be used to obtain the range to be populated.
            SpreadsheetGear.IName namedRange = workbook.Names["DataRange"];
            SpreadsheetGear.IRange dataRange = namedRange.RefersToRange;
    
            // Load some random data into the range.
            dataRange.Formula = "=1000 + RAND() * 10000";
    
            // Save workbook to an Open XML (XLSX) workbook stream.
            System.IO.Stream stream = workbook.SaveToStream(
                SpreadsheetGear.FileFormat.OpenXMLWorkbook);
    
            // Reset stream's current position back to the beginning.
            stream.Seek(0, System.IO.SeekOrigin.Begin);
    
            // Stream the Excel spreadsheet to the client in a format
            // compatible with Excel 97/2000/XP/2003/2007/2010/2013/2016.
            return new FileStreamResult(stream,
                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        }
  2. Save HomeController.cs

Add hyperlink to trigger "Download Report From Template" Action

  1. Using a text editor, open Index.cshtml located under your project's /Views/Home/ subfolder.
  2. Find a place to add the following hyperlink:
        <a asp-action="DownloadReportFromTemplate">Download Report From Template</a>
  3. Save Index.cshtml

Build and run the application

  1. From the Command Prompt, enter the following command to build and run your application:
        dotnet run
  2. Navigate to http://localhost:5000 in your browser.
  3. Click on the "Download Report From Template" hyperlink created in the above step.
  4. Your browser should either prompt you to save an Excel file to your computer, or automatically save the file to the designated "Downloads" folder.
  5. Open the downloaded Excel report with Microsoft Excel.
Back To Tutorials