وارد کردن داده در فایل اکسل با MVC
شنبه 23 مرداد 1395گاهی اوقات ، نیاز است تا داده ها ی برنامه تحت وب را در فایل اکسل وارد کنیم .بنابراین ، ما می خواهیم به شما نشان دهیم که چگونه می توانیم داده را از برنامه ASP.NET 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
- ASP.net MVC
- 2k بازدید
- 5 تشکر