توضیحات و دانلود

بارگذاری ، خوانده و نمایش داده های فایل اکسل با استفاده از OLEDB در ASP.Net MVC
0 0
بارگذاری ، خوانده و نمایش داده های فایل اکسل با استفاده از OLEDB در ASP.Net MVC

با سلام در این مقاله با یک مثال توضیح خواهیم داد که چگونه بارگذاری ، خواندن و نمایش داده های فایل اکسل با استفاده از OLEDB در ASP.Net MVC Razor انجام می شود .
داده های پرونده بارگذاری شده اکسل با استفاده از کتابخانه OLEDB خوانده می شوند و داده های خوانده شده در قالب در جدول (شبکه) نمایش داده می شوند.
 
رشته های اتصال
فایل های اکسل نسخه های 97-2003 و 2007 و بالاتر از ارائه دهنده های مختلف OLEDB استفاده می کنند و از این رو دو رشته اتصال مختلف در فایل Web.Config ذخیره شده اند.
خاصیت DataSource درPlaceholder {0} اختصاص داده شده است ، که با مسیر واقعی فایل جایگزین خواهد شد.

<connectionStrings>
    <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
    <add name="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'"/>
</connectionStrings>

فضاهای نام
باید نامهای زیر را وارد کنید.

using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

Model
در زیر یک کلاس Model به نام CustomerModel با سه خاصیت یعنی CustomerId ، نام و کشور ارائه شده است.

public class CustomerModel
{
    ///<summary>
    /// Gets or sets CustomerId.
    ///</summary>
    public int CustomerId { get; set; }
 
    ///<summary>
    /// Gets or sets Name.
    ///</summary>
    public string Name { get; set; }
 
    ///<summary>
    /// Gets or sets Country.
    ///</summary>
    public string Country { get; set; }
}

Controller
Controller از دو روش تشکیل شده است.
روش  انجام عملیات GET
در داخل این روش Action ، یک مجموعه Generic List خالی از شیء کلاس CustomerModel بازگردانده می شود.
روش عمل برای مدیریت عملیات POST برای بارگذاری و خواندن فایل اکسل
با انتخاب  فایلExcel و کلیک بر روی دکمه Import ، این روش Action استفاده می شود و فایل بارگذاری شده را در پارامتر HttpPostedFileBase دریافت می کند.
پرونده بارگذاری شده در اکسل در پوشه ای به نام Uploads ذخیره و بر اساس برنامه افزودنی  XLS (97-2003) یا XLSX (2007 و بالاتر) ، رشته اتصال مناسب از فایل Web.Config خوانده و محل نگهدارنده جایگزین مسیر می شود.
سپس با استفاده از کلاسهای OLEDB ارتباطی با فایل اکسل برقرار می شود و نام اولین برگه تعیین و اولین برگه داده ها در DataTable خوانده می شود.
سرانجام یک حلقه بر روی DataTable اجرا و سوابق در مجموعه Generic List اشیاء کلاس CustomerModel کپی می شوند که سپس به View ارسال می شوند.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View(new List<CustomerModel>());
    }
 
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase postedFile)
    {
        List<CustomerModel> customers = new List<CustomerModel>();
        string filePath = string.Empty;
        if (postedFile != null)
        {
            string path = Server.MapPath("~/Uploads/");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
 
            filePath = path + Path.GetFileName(postedFile.FileName);
            string extension = Path.GetExtension(postedFile.FileName);
            postedFile.SaveAs(filePath);
 
            string conString = string.Empty;
            switch (extension)
            {
                case".xls": //Excel 97-03.
                    conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                    break;
                case".xlsx": //Excel 07 and above.
                    conString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                    break;
            }
 
            conString = string.Format(conString, filePath);
 
            using (OleDbConnection connExcel = new OleDbConnection(conString))
            {
                using (OleDbCommand cmdExcel = new OleDbCommand())
                {
                    using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
                    {
                        DataTable dt = new DataTable();
                        cmdExcel.Connection = connExcel;
 
                        //Get the name of First Sheet.
                        connExcel.Open();
                        DataTable dtExcelSchema;
                        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                        connExcel.Close();
 
                        //Read Data from First Sheet.
                        connExcel.Open();
                        cmdExcel.CommandText = "SELECT * From [" + sheetName + "]";
                        odaExcel.SelectCommand = cmdExcel;
                        odaExcel.Fill(dt);
                        connExcel.Close();
 
                        foreach (DataRow row in dt.Rows)
                        {
                            customers.Add(new CustomerModel
                            {
                                CustomerId = Convert.ToInt32(row["Id"]),
                                Name = row["Name"].ToString(),
                                Country = row["Country"].ToString()
                            });
                        }
                    }
                }
            }
        }
 
        return View(customers);
    }
}

View
در داخل View ، کلاس CustomerModel به عنوان IEnumerable اعلام شده است و مشخص می کند که آن به عنوان یک مجموعه در دسترس خواهد بود.
View شامل یک عنصر HTML FileUpload و یک دکمه ارسال است که در یک عنصر فرم قرار دارد.
فرم HTML با استفاده از روش Html.BeginForm ایجاد شده است که پارامترهای زیر را می پذیرد.
ActionName - نام عمل در این حالت Index است.
ControllerName - نام Controller در این حالت Home است.
FormMethod - این روش فرم یعنی GET یا POST را مشخص می کند. در این حالت روی POST تنظیم می شود.
HtmlAttributes - این مجموعه می تواند ویژگی های فرم اضافی را مشخص کند. در اینجا باید enctype = "multipart / form-data" را مشخص کنیم که برای بارگذاری فایل ها ضروری است
که برای نمایش سوابق از جدول HTML استفاده می شود. یک حلقه بر روی Model اجرا خواهد شد که ردیف های جدول HTML را با داده های فایل Excel ایجاد می کند.

@using Read_Excel_OLEDB_MVC.Models
@model IEnumerable<CustomerModel>
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" name="postedFile"/>
        <input type="submit" value="Import"/>
    }
    @if (Model.Count() > 0)
    {
        <hr/>
        <table cellpadding="0" cellspacing="0">
            <tr>
                <th>Id</th>
                <th>Name</th>
                <th>Country</th>
            </tr>
            @foreach (CustomerModel customer in Model)
            {
                <tr>
                    <td>@customer.CustomerId</td>
                    <td>@customer.Name</td>
                    <td>@customer.Country</td>
                </tr>
            }
        </table>
    }
</body>
</html>

عکسهای صفحه
فایل اکسل

نمایش داده های اکسل در HTML Grid

 

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :