وارد کردن داده در فایل اکسل با MVC

گاهی اوقات ، نیاز است تا داده ها ی برنامه تحت وب را در فایل اکسل وارد کنیم .بنابراین ، ما می خواهیم به شما نشان دهیم که چگونه می توانیم داده را از برنامه ASP.NET MVC در اکسل وارد کنیم .

 وارد کردن داده در فایل اکسل با MVC

در این مقاله ، ما به شما  نشان خواهیم داد ، داده های برنامه با کلیک کردن بر روی دکمه ، داده ها در فایل اکسل وارد می شود و آن را در سیستم local  خودمان دانلود می کنیم.

ایجاد پروژه ASP.NET MVC

برای ایجاد یک برنامه ی ASP.NET MVC جدید  ، Visual Studio 2015 را باز کنید ، منوی File  را باز کنید و New -> Project را انتخاب کنید .

پنجره ی “New Project” باز می شود. بنابراین به ویژوال C#  -> Web  -> ASP.NET Web Application را انتخاب کنید.نام برنامه را “ExportExcelDemo” انتخاب کنید و روی OK کلیک کنید.

یک پنجره دیگر برای شما باز می شود ، که شما می توانید انواع پروژه های ASP.Net  را انتخاب کنید [web Forms, MVC,Web APIs و...[ .بنابراین ، شما باید MVC را انتخاب کنید و روی  OK  کلیک کنید.

اضافه کردن کلاس های Entity  :

یک برنامه ASP.NET MVC برای شما به نام “ExportExcelDemo” ایجاد خواهد شد.از آنجایی که  ،ما داده را از دیتابیس می گیریم. تعدادی کلاس های entity و دیتابیس های کلاس در دسترس را اضافه کنید. برای اضافه کردن کلاس Model جدید ، روی پوشه ی Models راست کلیک کنید و Add را انتخاب کنید. Class را انتخاب کنید یک پنجره برای شما باز خواهد شد که شما می توانید کلاس خود را نامگذاری کنید.

بنابراین ، ما کلاس های entity  زیر و در کلاس های مربوط به  Context  پایگاه داده  را اضافه می کنیم .

Employee.cs

1.	using System;  
2.	using System.ComponentModel.DataAnnotations;  
3.	namespace ExportExcelDemo.Models  
4.	{  
5.	    public class Employee   
6.	    {  
7.	        [Key]  
8.	        public int Id {  
9.	            get;  
10.	            set;  
11.	        }  
12.	        public string Name {  
13.	            get;  
14.	            set;  
15.	        }  
16.	        public string Email {  
17.	            get;  
18.	            set;  
19.	        }  
20.	        public int Age {  
21.	            get;  
22.	            set;  
23.	        }  
24.	        public string Address {  
25.	            get;  
26.	            set;  
27.	        }  
28.	        public int DepartmentId {  
29.	            get;  
30.	            set;  
31.	        }  
32.	    }  
33.	}  

DbAccessContext.cs

در اینجا در این دمو ، ما از مسیر Code First برای گرفتن داده استفاده می کنیم.

1.	using System.Data.Entity;  
2.	namespace ExportExcelDemo.Models  
3.	{  
4.	    public class DbAccessContext: DbContext   
5.	    {  
6.	        public DbAccessContext(): base("DefaultConnection") {}  
7.	        public DbSet < Employee > Employees   
8.	        {  
9.	            get;  
10.	            set;  
11.	        }  
12.	        public DbSet < Department > Departments {  
13.	            get;  
14.	            set;  
15.	        }  
16.	    }  
17.	}  

EmployeeViewModel.cs

1.	namespace ExportExcelDemo.Models   
2.	{  
3.	    public class EmployeeViewModel   
4.	    {  
5.	        public string Name {  
6.	            get;  
7.	            set;  
8.	        }  
9.	        public string Email {  
10.	            get;  
11.	            set;  
12.	        }  
13.	        public int Age {  
14.	            get;  
15.	            set;  
16.	        }  
17.	        public string Address {  
18.	            get;  
19.	            set;  
20.	        }  
21.	        public string Department {  
22.	            get;  
23.	            set;  
24.	        }  
25.	    }  
26.	}  

اضافه کردن کتابخانه ی ClosedXml

برای وارد کردن داده ی  viewی MVC  در فایل اکسل ، ما از کتابخانه ی ClosedXml استفاده می کنیم.برای اضافه کردن این کتابخانه به برنامه خود ، روی پروژه خود راست کلیک کنید و NuGet Manager  را انتخاب کنید . در اینجا ، شما مانند زیر باید جستجو کنید و روی Install کلیک کنید.

زمانی که Install را زدید ، چند دقیقه بعد کتابخانه ClosedXml در برنامه ی شما اضافه می شود.

اضافه کردن Controller:

ما یک کنترلر به نام "EmployeeController" اضافه می کنیم.در اینجا ، ما کد را برای گرفتن داده از دیتابیس نوشته ایم ، با استفاده از  Code First و کلیک کردن دکمه ، داده در فایل اکسل قرار می گیرد.

بنابراین ، روی پوشه ی Controllers کلیک کنید و یک کنترلر به نام  "EmployeeController" اضافه کنید. و تغییرات به شکل زیر است:

EmployeeController.cs

1.	using ClosedXML.Excel;  
2.	using ExportExcelDemo.Models;  
3.	using System;  
4.	using System.Collections.Generic;  
5.	using System.IO;  
6.	using System.Linq;  
7.	using System.Web;  
8.	using System.Web.Mvc;  
9.	using System.Web.UI;  
10.	using System.Web.UI.WebControls;  
11.	namespace ExportExcelDemo.Controllers   
12.	{  
13.	    public class EmployeeController: Controller   
14.	    {  
15.	        public IList < EmployeeViewModel > GetEmployeeList()   
16.	        {  
17.	                DbAccessContext db = new DbAccessContext();  
18.	                var employeeList = (from e in db.Employees join d in db.Departments on e.DepartmentId equals d.DepartmentId select new EmployeeViewModel {  
19.	                    Name = e.Name,  
20.	                        Email = e.Email,  
21.	                        Age = (int) e.Age,  
22.	                        Address = e.Address,  
23.	                        Department = d.DepartmentName  
24.	                }).ToList();  
25.	                return employeeList;  
26.	            }  
27.	            // GET: Employee  
28.	        public ActionResult Index() {  
29.	            return View(this.GetEmployeeList());  
30.	        }  
31.	        public ActionResult ExportToExcel() {  
32.	            var gv = new GridView();  
33.	            gv.DataSource = this.GetEmployeeList();  
34.	            gv.DataBind();  
35.	            Response.ClearContent();  
36.	            Response.Buffer = true;  
37.	            Response.AddHeader("content-disposition", "attachment; filename=DemoExcel.xls");  
38.	            Response.ContentType = "application/ms-excel";  
39.	            Response.Charset = "";  
40.	            StringWriter objStringWriter = new StringWriter();  
41.	            HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter);  
42.	            gv.RenderControl(objHtmlTextWriter);  
43.	            Response.Output.Write(objStringWriter.ToString());  
44.	            Response.Flush();  
45.	            Response.End();  
46.	            return View("Index");  
47.	        }  
48.	    }  
49.	}  

اضافه کردن View :

حال ، زمان این است که View را برای نمایش داده ، اضافه کنیم. بنابراین یک View به نام Index اضافه کنید ، که برای وارد کردن داده در فایل اکسل استفاده می شود.

Index.cshtml

1.	@model IList  
2.	<ExportExcelDemo.Models.EmployeeViewModel>  
3.	@{  
4.	ViewBag.Title = "Index";  
5.	Layout = "~/Views/Shared/_Layout.cshtml";  
6.	}  
7.	  
8.	@using (Html.BeginForm("ExportToExcel", "Employee", FormMethod.Post))  
9.	{  
10.	  
11.	    <br />  
12.	    <br />  
13.	    <h2>  
14.	Export Data To Excel  
15.	</h2>  
16.	    <table style="background-color: white; width: 100%;">  
17.	        <tr>  
18.	            <th style="border: 1px solid black; text-align: left; width: 20%; padding-left: 20px;">  
19.	Name  
20.	</th>  
21.	            <th style="border: 2px solid black; text-align: center; width: 20%">  
22.	Email  
23.	</th>  
24.	            <th style="border: 2px solid black; text-align: center; width: 20%">  
25.	Age  
26.	</th>  
27.	            <th style="border: 2px solid black; text-align: center; width: 20%">  
28.	Address  
29.	</th>  
30.	            <th style="border: 2px solid black; text-align: center; width: 20%">  
31.	Department  
32.	</th>  
33.	        </tr>  
34.	@foreach (var itm in Model)  
35.	{  
36.	  
37.	        <tr>  
38.	            <td style="padding-left: 20px;">  
39.	@Html.DisplayFor(m => itm.Name)  
40.	</td>  
41.	            <td style="padding-left: 20px;">  
42.	@Html.DisplayFor(m => itm.Email)  
43.	</td>  
44.	            <td style="padding-left: 20px;">  
45.	@Html.DisplayFor(m => itm.Age)  
46.	</td>  
47.	            <td style="padding-left: 50px;">  
48.	@Html.DisplayFor(m => itm.Address)  
49.	</td>  
50.	            <td style="padding-left: 50px;">  
51.	@Html.DisplayFor(m => itm.Department)  
52.	</td>  
53.	        </tr>  
54.	}  
55.	  
56.	        <tr>  
57.	            <td colspan="4">  
58.	                <br />  
59.	                <br />  
60.	                <input type="submit" value="Export to Excel" class="button" />  
61.	            </td>  
62.	        </tr>  
63.	    </table>  
64.	}  

Web.Config

1.	<connectionStrings>  
2.	    <add name="DefaultConnection" connectionString="Data Source=my-computer;Initial Catalog=TestEmployee;Integrated Security=True; user id=mukesh; password=mukesh;" providerName="System.Data.SqlClient" />  
3.	</connectionStrings>  

بنابراین ، همه چیز کامل شد .حال می توانیم برنامه را اجرا بگیریم ، برای اجرای برنامه فقط کافی است دکمه ی f5 را کلیک کنید .در مرورگر به شکل زیر باز می شود.

در اینجا شما می توانید تمام داده ها را ببینید ، که از دیتابیس آمده اند .زمانی که شما روی دکمه "Export to Excel"  کلیک میکنید . داده در فایل اکسل قرار می گیرد.

فایل DemoExcel.xlsرا دانلود کنید و داده ها به شکل زیر نمایش داده می شود.

آموزش asp.net mvc

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب