Thursday, 26 March 2015

Asp.Net MVC Export Data to Excel File Of WebGrid Using C#.Net

3/26/2015 - By Pranav Singh 6

This article will show you how you can asp.net mvc export data to excel file of webgrid using c#.net. So in this article first we will bind grid  view by using entity framework.


First we will create table in our sql DB.


So for this article we will create a new asp.net mvc application. So before adding writing the view code we will create the model class file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication1.Models
{
    public class ProductDetailModel
    {
        public List<Product> ProductList { get; set; }
    }
    public class Product
    {
        public int ID { get; set; }
        public string ProductName { get; set; }
        public string ProductDetail { get; set; }
        public int CurrentStock { get; set; }
    }
}

Now we will add an entity file and add  the table.


Now we will create a view of controller action and add the blow code into the view of the page.

@model MvcApplication1.Models.ProductDetailModel
@{
    ViewBag.Title = "Asp.Net MVC Export Data to Excel File Of WebGrid Using C#.Net";
}
<style>
    table, td, th
    {
        border: 1px solid green;
        border-collapse: collapse;
    }
   
    th
    {
        border: 1px solid black;
        background-color: green;
        color: white;
    }
</style>
@using (@Html.BeginForm("Index", "Home"))
{
    var grid = new WebGrid(Model.ProductList, canSort: false);

    <div>
        @grid.GetHtml(columns:
                grid.Columns
                (
                        grid.Column("ID", "ID"),
                        grid.Column("ProductName", "Product Name"),
                        grid.Column("ProductDetail", "Product Detail"),
                        grid.Column("CurrentStock", "Current Stock")
                ), mode: WebGridPagerModes.Numeric)
    </div>
    <div>
        <input type="submit" value="Exxport Data" />
    </div>
}

After this we will add the below code into the controller of the page.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.UI;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        [HttpGet]
        public ActionResult Index()
        {
            ProductDetailModel objproductdetailmodel = new ProductDetailModel();
            objproductdetailmodel.ProductList = ProductData();
            return View(objproductdetailmodel);
        }
        [HttpPost]
        public ActionResult Index(int id = 0)
        {
            ProductDetailModel objproductdetailmodel = new ProductDetailModel();
            objproductdetailmodel.ProductList = ProductData();
            /*Binding product detail*/
            var dataGrid = new GridView();
            dataGrid.DataSource = objproductdetailmodel.ProductList;
            dataGrid.DataBind();

            /*Code to eport the detail in excel sheet format*/
            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment; filename=ProductExcelFile.xls");
            Response.ContentType = "application/ms-excel";

            Response.Charset = "";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);

            dataGrid.RenderControl(htw);

            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();

            return View(objproductdetailmodel);
        }

        ///

        /// This finction is used for providing the data.
        /// we will bind this data
        /// to diaply in grid format.
        /// You can get data from data base and
        /// thee put into collection
          ///
        public List<Product> ProductData()
        {
            List<Product> objProduct = new List<Product>();
            DemoEntities objDemoEntities = new DemoEntities();
            var productItem = from data in objDemoEntities.ProductMasters
                              select data;
            foreach (var item in productItem)
            {
                objProduct.Add(new Product
                {
                    ID = item.Id,
                    ProductName = item.ProductName,
                    ProductDetail = item.ProductDetail,
                    CurrentStock = (int)item.CurrentStock
                });
            }
            return objProduct;
        }
    }
}

      
In above I have fetched the data from the database and  made the collection. After that on button click I have create the gridview variable and bind the list data to the grid view. After that I have code of export code have been written.

Now we have done run the application and check the output.



About the Author

We are the group of people who are expertise in different Microsoft technology like Asp.Net,MVC,C#.Net,VB.Net,Windows Application,WPF,jQuery,Javascript,HTML. This blog is designed to share the knowledge.

Get Updates

Subscribe to our e-mail newsletter to receive updates.

Share This Post

6 comments:

  1. Good Post.
    You are great.Thank You.

    ReplyDelete
  2. Good Post.
    You are great.Thank You.

    ReplyDelete
  3. What is DemoEntities ? Its showing error over there...

    ReplyDelete
  4. Good post, thanks!
    I've noticed that fields that have leading zeroes (001001) end up losing them when they end up in Excel (1001). Any thoughts on how to avoid that?

    ReplyDelete
  5. this is really good post but how to rename excel header text in mvc..

    ReplyDelete
    Replies
    1. Thanks for your valuable comment. I will check and get back to you for header rename

      Delete

Please let me know your view

Free Ebooks


About Us

We are the group of people who are expertise in different Microsoft technology like Asp.Net,MVC,C#.Net,VB.Net,Windows Application,WPF,jQuery,Javascript,HTML. This blog is designed to share the knowledge.

Contact Us

For writing article in this website please send request by your

GMAIL ID: dotnetpools@gmail.com

Bugs and Suggestions

As we all know that this website is for sharing knowledge and providing proper solution. So while reading the article is you find any bug or if you have any suggestion please mail us at contact@aspdotnet-pools.com.

Partners


Global Classified : Connectseekers.com
© 2014 aspdotnet-pools.com Designed by Bloggertheme9.
back to top