Available in the Full Version
ASP.NET MVC Excel Library - Create Excel Worksheet
You can export our jQuery Grid’s data to a Microsoft Excel® spreadsheet.
This sample uses CTP (Community Technical Preview) features. The API and behavior may change when these features are released with full support.
This sample is designed for a larger screen size.
On mobile, try rotating your screen, view full size, or email to another device.
Our Excel library also provides the option of selecting from a variety of different export formats, as well as styling options for the exported spreadsheet.
Code View
Copy to Clipboard
@using Infragistics.Web.Mvc @using IgniteUI.SamplesBrowser.Models @model IQueryable<IgniteUI.SamplesBrowser.Models.Northwind.Order> <!DOCTYPE html> <html> <head> <title></title> <!-- Ignite UI for jQuery Required Combined CSS Files --> <link href="http://cdn-na.infragistics.com/igniteui/2024.1/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet" /> <link href="http://cdn-na.infragistics.com/igniteui/2024.1/latest/css/structure/infragistics.css" rel="stylesheet" /> <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.8.3.js"></script> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="http://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script> <!-- Ignite UI for jQuery Required Combined JavaScript Files --> <script src="http://cdn-na.infragistics.com/igniteui/2024.1/latest/js/infragistics.core.js"></script> <script src="http://cdn-na.infragistics.com/igniteui/2024.1/latest/js/infragistics.lob.js"></script> <style type="text/css"> .export-excel-sample fieldset { margin: 5px; margin-bottom: 10px; padding: 10px; border: 1px solid #CCCCCC; } .export-excel-sample fieldset label { display: block; margin-bottom: 3px; } .export-excel-sample fieldset input { margin-bottom: 5px; float: left; clear: left; } .export-excel-sample fieldset label { float: left; width: 160px; padding-top: 2px; } .export-excel-sample fieldset fieldset { display: inline-block; vertical-align: middle; width: auto; } #grid1_container { margin: 15px auto; } .export-excel-sample .button-container { position: relative; display: inline-block; vertical-align: middle; height: auto; } </style> </head> <body> @using(Html.BeginForm()) { <div class="export-excel-sample"> <fieldset> <legend>Export Options</legend> <fieldset> <legend>Export Type</legend> <input type="radio" name="exportType" id="currentPage" value="false" checked="checked" /> <label for="currentPage">Current Page</label> <input type="radio" name="exportType" id="allPages" value="true" /> <label for="allPages">All Pages</label> </fieldset> <fieldset> <legend>Export Format</legend> <input type="radio" name="exportFormat" id="Excel2007" value="true" checked="checked" /> <label for="Excel2007">Excel 2007 Format</label> <input type="radio" name="exportFormat" id="Excel97-03" value="false" /> <label for="Excel97-03">Excel 97 2003 Format</label> </fieldset> <div class="button-container"> <input id="btnSubmit" type="submit" value="Export Button" /> </div> </fieldset> </div> <script type="text/javascript"> $(function () { var grid = $("#grid1"), pageSize = $("#pageSize"), pageNumber = $("#pageNumber"); pageNumber.val(0); pageSize.val(0); grid.on("iggridrendered", function (e, ui) { pageSize.val(grid.igGridPaging("option", "pageSize")); pageNumber.val(grid.igGridPaging("option", "currentPageIndex")); }); grid.on("iggridpagingpageindexchanged", function (e, ui) { pageNumber.val(ui.pageIndex); }); grid.on("iggridpagingpagesizechanged", function (e, ui) { pageSize.val(ui.pageSize); pageNumber.val(0); }); }); </script> @(Html.Infragistics().Grid(Model).ID("grid1") .PrimaryKey("OrderID") .AutoGenerateColumns(false) .Columns(column => { column.For(x => x.OrderID).HeaderText("Order ID").DataType("number"); column.For(x => x.ContactName).HeaderText("Contact Name"); column.For(x => x.ShipAddress).HeaderText("Shipping Address"); column.For(x => x.OrderDate).HeaderText("Order Date"); }).Features(features => { features.Paging(); }).Height("500").Width("100%").DataSourceUrl(Url.Action("PagingGetData")).DataBind().Render()) <input type="hidden" name="pageSize" id="pageSize" value="" /> <input type="hidden" name="pageNumber" id="pageNumber" value="" /> } </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; #region Excel Exporting using System.Drawing; using System.Security; using Infragistics.Web.Mvc; using Infragistics.Documents.Excel; using IgniteUI.SamplesBrowser.Models.Northwind; using IgniteUI.SamplesBrowser.Models.Repositories; #endregion namespace IgniteUI.SamplesBrowser.Controllers { public class InfragisticsExcelController : Controller { private IEnumerable<Order> orders = null; // Orders data private IEnumerable<Order> Orders { get { try { if (orders == null) orders = RepositoryFactory.GetOrderRepository().Get().Take(100).AsQueryable(); return orders; } catch (Exception) { return new List<Order>().AsQueryable(); } } } // // GET: /InfragisticsExcel/ [ActionName("create-excel-worksheet")] public ActionResult ExcelExporter() { return View("create-excel-worksheet", Orders); } [GridDataSourceAction] [ActionName("PagingGetData")] public ActionResult PagingGetData() { return View("create-excel-worksheet", Orders); } [HttpPost] [ActionName("create-excel-worksheet")] public void ExcelExporter(int pageNumber, int pageSize, bool exportType, bool exportFormat) { pageNumber++; List<Order> newOrders = Orders.ToList(); bool exportAllPages = exportType; WorkbookFormat excelFormat; if(exportFormat) excelFormat = WorkbookFormat.Excel2007; else excelFormat = WorkbookFormat.Excel97To2003; if(exportAllPages) { newOrders = newOrders .Select(c => new Order { OrderID = c.OrderID, ContactName = c.ContactName, ShipAddress = c.ShipAddress, OrderDate = c.OrderDate }) .ToList(); } else { newOrders = newOrders .Skip<Order>(pageSize * (pageNumber - 1)) .Take<Order>(pageSize) .Select(c => new Order { OrderID = c.OrderID, ContactName = c.ContactName, ShipAddress = c.ShipAddress, OrderDate = c.OrderDate }) .ToList(); } ExcelExportingModel exportModel = new ExcelExportingModel(excelFormat); exportModel.PopulateExcelWorkbook(newOrders); SendForDownload(exportModel.ExcelWorkbook, excelFormat); } [SecuritySafeCritical] private void SendForDownload(Workbook document, WorkbookFormat excelFormat) { string documentFileNameRoot; documentFileNameRoot = string.Format("Document.{0}", excelFormat == WorkbookFormat.Excel97To2003 ? "xls" : "xlsx"); Response.Clear(); Response.AppendHeader("content-disposition", "attachment; filename=" + documentFileNameRoot); Response.ContentType = "application/octet-stream"; document.SetCurrentFormat(excelFormat); document.Save(Response.OutputStream); Response.End(); } #region Excel Report Model class ExcelExportingModel { #region Members #region Private Members private Workbook excelWorkbook; #endregion #endregion #region Constructor public ExcelExportingModel() { this.excelWorkbook = new Workbook(); } public ExcelExportingModel(WorkbookFormat exportFormat) { this.excelWorkbook = new Workbook(exportFormat); } #endregion #region Properties public Workbook ExcelWorkbook { get { return this.excelWorkbook; } } #endregion #region Public Methods public void PopulateExcelWorkbook(List<Order> data) { Worksheet currentWorksheet = this.excelWorkbook.Worksheets.Add("WorkSheet1"); foreach (var cell in currentWorksheet.GetRegion("A1:D1")) { cell.CellFormat.Fill = CellFill.CreateSolidFill(Color.Gray); cell.CellFormat.Font.ColorInfo = new WorkbookColorInfo(Color.White); } currentWorksheet.Rows[0].Cells[0].Value = "Order ID"; currentWorksheet.Rows[0].Cells[1].Value = "Contact Name"; currentWorksheet.Rows[0].Cells[2].Value = "Shipping Address"; currentWorksheet.Rows[0].Cells[3].Value = "Order Date"; currentWorksheet.Columns[0].Width = 3000; currentWorksheet.Columns[0].CellFormat.Alignment = HorizontalCellAlignment.Left; currentWorksheet.Columns[1].Width = 7100; currentWorksheet.Columns[2].Width = 3000; currentWorksheet.Columns[2].CellFormat.Alignment = HorizontalCellAlignment.Left; currentWorksheet.Columns[3].Width = 6100; int i = 1; foreach (Order order in data) { currentWorksheet.Rows[i].Cells[0].Value = order.OrderID; currentWorksheet.Rows[i].Cells[1].Value = order.ContactName; currentWorksheet.Rows[i].Cells[2].Value = order.ShipAddress; currentWorksheet.Rows[i].Cells[3].Value = order.OrderDate != null ? string.Format("{0:d}", order.OrderDate) : ""; i++; } } #endregion } #endregion } }
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace IgniteUI.SamplesBrowser.Models.Northwind { public class Order { public int OrderID { get; set; } public string CustomerID { get; set; } public Nullable<int> EmployeeID { get; set; } public Nullable<System.DateTime> OrderDate { get; set; } public Nullable<System.DateTime> RequiredDate { get; set; } public Nullable<System.DateTime> ShippedDate { get; set; } public Nullable<int> ShipVia { get; set; } public Nullable<decimal> Freight { get; set; } public string ShipName { get; set; } public string ShipAddress { get; set; } public string ShipCity { get; set; } public string ShipRegion { get; set; } public string ShipPostalCode { get; set; } public string ShipCountry { get; set; } public string ContactName { get; set; } public string EmployeeName { get; set; } public int ShipperID { get; set; } public string ShipperName { get; set; } public decimal TotalPrice { get; set; } public int TotalItems { get; set; } } }